{
  "cells": [
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {
        "id": "XfZIRqcJbJQj"
      },
      "source": [
        "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/LC1332/Chinese-alpaca-lora/blob/main/notebook/translate_json_data.ipynb)\n"
      ]
    },
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {
        "id": "mTxx9QR6bPC3"
      },
      "source": [
        "# Translate\n",
        "\n",
        "Developed by Ziang Leng 冷子昂, Qiyuan Chen 陈启源 and Cheng Li 李鲁鲁.\n",
        "\n",
        "This script translate the [alpaca_data.json](https://github.com/tatsu-lab/stanford_alpaca/blob/main/alpaca_data.json) to Chinese using ChatGPT API.\n",
        "\n",
        "You can run this script direcly in colab, without git clone the whole project\n",
        "\n",
        "This script highly reference the japanese project with slightly change\n",
        "\n",
        "You have input your OpenAI key in the right place to run the script\n",
        "\n",
        "To run this the openAI account have to bind with credit card \n",
        "\n",
        "Translated \n",
        "We paid around US $45 to translate the full dataset to Chinese. Translated data is available. ([chinese_alpaca_data.json](TODO:change the link https://github.com/masa3141/japanese-alpaca-lora/blob/main/data/japanese_alpaca_data.json))"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 3,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "W3SO2vgzcBpF",
        "outputId": "a2b8c5b0-1285-4f20-ba6d-283a1e886774"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n",
            "Requirement already satisfied: openai in /usr/local/lib/python3.9/dist-packages (0.27.2)\n",
            "Requirement already satisfied: tqdm in /usr/local/lib/python3.9/dist-packages (from openai) (4.65.0)\n",
            "Requirement already satisfied: requests>=2.20 in /usr/local/lib/python3.9/dist-packages (from openai) (2.27.1)\n",
            "Requirement already satisfied: aiohttp in /usr/local/lib/python3.9/dist-packages (from openai) (3.8.4)\n",
            "Requirement already satisfied: charset-normalizer~=2.0.0 in /usr/local/lib/python3.9/dist-packages (from requests>=2.20->openai) (2.0.12)\n",
            "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.9/dist-packages (from requests>=2.20->openai) (1.26.15)\n",
            "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.9/dist-packages (from requests>=2.20->openai) (2022.12.7)\n",
            "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.9/dist-packages (from requests>=2.20->openai) (3.4)\n",
            "Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.9/dist-packages (from aiohttp->openai) (1.3.1)\n",
            "Requirement already satisfied: attrs>=17.3.0 in /usr/local/lib/python3.9/dist-packages (from aiohttp->openai) (22.2.0)\n",
            "Requirement already satisfied: yarl<2.0,>=1.0 in /usr/local/lib/python3.9/dist-packages (from aiohttp->openai) (1.8.2)\n",
            "Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib/python3.9/dist-packages (from aiohttp->openai) (1.3.3)\n",
            "Requirement already satisfied: async-timeout<5.0,>=4.0.0a3 in /usr/local/lib/python3.9/dist-packages (from aiohttp->openai) (4.0.2)\n",
            "Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.9/dist-packages (from aiohttp->openai) (6.0.4)\n"
          ]
        }
      ],
      "source": [
        "!pip install openai"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 4,
      "metadata": {
        "id": "3Ym5s8XqbxoJ"
      },
      "outputs": [],
      "source": [
        "import openai\n",
        "import json\n",
        "from concurrent.futures import ThreadPoolExecutor, as_completed\n",
        "from tqdm import tqdm\n",
        "import os"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 5,
      "metadata": {
        "id": "g-JHrX2EcAiT"
      },
      "outputs": [],
      "source": [
        "openai.api_key = ''"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 6,
      "metadata": {
        "id": "QsQS8Fvacekr"
      },
      "outputs": [],
      "source": [
        "# Recommeding to store the data in mounted google drive\n",
        "!mkdir translated_data translated_data/data translated_data/error "
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "9sOrRcw42vJ5"
      },
      "outputs": [],
      "source": [
        "!rm -rf /content/translated_data/data"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 7,
      "metadata": {
        "id": "DK9rvJjydCZo"
      },
      "outputs": [],
      "source": [
        "# Since it doesn't succeed in one attempt, it is necessary to execute multiple times, so from the next time onwards, only translate things that do not exist.\n",
        "translated_files = set(os.listdir('translated_data/data'))"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "x7L-PVaFJamb"
      },
      "outputs": [],
      "source": [
        "\n",
        "\n",
        "\n",
        "def translate_text(value):\n",
        "    response = openai.ChatCompletion.create(\n",
        "        model=\"gpt-3.5-turbo\",\n",
        "        messages=[\n",
        "                {\"role\": \"system\", \"content\": \"这是一个能够将文本翻译成中文的AI助手。<start><end>请将引号中的文本翻译成简体中文。\"},\n",
        "                {\"role\": \"user\", \"content\": f\"<start>'{value}'<end>\\n 中文翻译: \"},\n",
        "            ],\n",
        "        max_tokens=1024,\n",
        "        temperature=0,\n",
        "        )\n",
        "    return response.choices[0][\"message\"][\"content\"].strip().replace(\"<start>\", \"\").replace(\"<end>\", \"\")\n",
        "\n",
        "def translate_item(item):\n",
        "    translated_item = {}\n",
        "    for key, value in item.items():\n",
        "        if value:\n",
        "            translated_value = translate_text(value)\n",
        "            translated_item[key] = translated_value\n",
        "        else:\n",
        "            translated_item[key] = ''\n",
        "    return translated_item\n",
        "\n",
        "def save_item(item, file_name):\n",
        "    with open(file_name, 'w') as f:\n",
        "        json.dump(item, f, ensure_ascii=False, indent=4)\n",
        "\n",
        "def translate_save(item, i):\n",
        "    if f\"translated_{i}.json\" in translated_files:\n",
        "      return\n",
        "    if os.path.isfile( f\"translated_data/data/translated_{i}.json\" ):\n",
        "      return\n",
        "    try:\n",
        "      translated_item = translate_item(item)\n",
        "      save_item(translated_item, f\"translated_data/data/translated_{i}.json\")\n",
        "    except Exception as e:\n",
        "      print(f\"translated_{i}.json: {e}\")\n",
        "      with open(f\"translated_data/error/translated_{i}.json\", 'a'):\n",
        "          pass"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 9,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "KxRPToBUdaet",
        "outputId": "3f40fa1a-79ae-4482-c4eb-4763afbf4d87"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "26001\n"
          ]
        }
      ],
      "source": [
        "# Please upload alpaca_data.json to /content/\n",
        "\n",
        "with open('alpaca_data.json', 'r') as f:\n",
        "    data = json.load(f)\n",
        "    print(len(data))\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "dJdRvqx95Gws"
      },
      "outputs": [],
      "source": []
    },
    {
      "cell_type": "code",
      "execution_count": 10,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "jRiOYhlPdode",
        "outputId": "e0511373-b7e7-4874-e860-263479418a6d"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "translated_317.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_326.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_331.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_353.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_336.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_358.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_389.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_401.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_416.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_420.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_448.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_630.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_576.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_696.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_694.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_1145.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_1169.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_1210.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_1214.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_1199.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_1173.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_1195.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_1268.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_1391.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_1523.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_1514.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_1588.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_1709.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_1731.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_1685.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_1884.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_1880.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_1947.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_1942.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_1952.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_1945.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_2132.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_2131.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_2166.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_2152.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_2169.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_2171.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_2147.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_2181.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_2246.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_2595.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_2660.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_2741.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_2891.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_2875.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_3720.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_3733.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_3817.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_3867.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_3978.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_3958.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_4064.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_4205.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_4277.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_4327.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_4351.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_4717.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_4711.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_4809.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_4913.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_4980.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_5006.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_5086.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_5205.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_5293.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_5352.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_5381.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_5393.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_5425.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_5589.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_5568.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_5562.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_5571.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_5620.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_5642.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_5610.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_5641.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_5663.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_5698.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_5752.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_5978.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_5990.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_6059.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_6130.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_6408.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_7678.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_5523.json: Error communicating with OpenAI: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n",
            "translated_5650.json: Error communicating with OpenAI: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n",
            "translated_5809.json: Error communicating with OpenAI: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n",
            "translated_7998.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_8026.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_8032.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_8118.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_8117.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_8169.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_8174.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_8255.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_8304.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_8311.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_8325.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_8305.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_8313.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_8340.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_5766.json: HTTP code 502 from API (<html>\n",
            "<head><title>502 Bad Gateway</title></head>\n",
            "<body>\n",
            "<center><h1>502 Bad Gateway</h1></center>\n",
            "<hr><center>nginx</center>\n",
            "</body>\n",
            "</html>\n",
            ")\n",
            "translated_8527.json: Error communicating with OpenAI: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n",
            "translated_8572.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_6546.json: Error communicating with OpenAI: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n",
            "translated_8692.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_8696.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_8678.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_8712.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_6678.json: Error communicating with OpenAI: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n",
            "translated_6712.json: Error communicating with OpenAI: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n",
            "translated_6136.json: HTTP code 502 from API (<html>\n",
            "<head><title>502 Bad Gateway</title></head>\n",
            "<body>\n",
            "<center><h1>502 Bad Gateway</h1></center>\n",
            "<hr><center>nginx</center>\n",
            "</body>\n",
            "</html>\n",
            ")\n",
            "translated_8813.json: Error communicating with OpenAI: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n",
            "translated_8889.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_8899.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_6163.json: HTTP code 502 from API (<html>\n",
            "<head><title>502 Bad Gateway</title></head>\n",
            "<body>\n",
            "<center><h1>502 Bad Gateway</h1></center>\n",
            "<hr><center>nginx</center>\n",
            "</body>\n",
            "</html>\n",
            ")\n",
            "translated_8904.json: Error communicating with OpenAI: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n",
            "translated_6787.json: Error communicating with OpenAI: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n",
            "translated_6871.json: Error communicating with OpenAI: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n",
            "translated_8940.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_6904.json: Error communicating with OpenAI: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n",
            "translated_6908.json: Error communicating with OpenAI: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n",
            "translated_8989.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_9016.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_9082.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_9053.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_9064.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_9086.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_9066.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_9058.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_9105.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_6505.json: HTTP code 502 from API (<html>\n",
            "<head><title>502 Bad Gateway</title></head>\n",
            "<body>\n",
            "<center><h1>502 Bad Gateway</h1></center>\n",
            "<hr><center>nginx</center>\n",
            "</body>\n",
            "</html>\n",
            ")\n",
            "translated_9178.json: Error communicating with OpenAI: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n",
            "translated_9249.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_9280.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_9329.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_9360.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_6744.json: HTTP code 502 from API (<html>\n",
            "<head><title>502 Bad Gateway</title></head>\n",
            "<body>\n",
            "<center><h1>502 Bad Gateway</h1></center>\n",
            "<hr><center>nginx</center>\n",
            "</body>\n",
            "</html>\n",
            ")\n",
            "translated_9418.json: Error communicating with OpenAI: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n",
            "translated_9446.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_9552.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_6823.json: HTTP code 502 from API (<html>\n",
            "<head><title>502 Bad Gateway</title></head>\n",
            "<body>\n",
            "<center><h1>502 Bad Gateway</h1></center>\n",
            "<hr><center>nginx</center>\n",
            "</body>\n",
            "</html>\n",
            ")\n",
            "translated_9563.json: Error communicating with OpenAI: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n",
            "translated_9542.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_6933.json: HTTP code 502 from API (<html>\n",
            "<head><title>502 Bad Gateway</title></head>\n",
            "<body>\n",
            "<center><h1>502 Bad Gateway</h1></center>\n",
            "<hr><center>nginx</center>\n",
            "</body>\n",
            "</html>\n",
            ")\n",
            "translated_9662.json: Error communicating with OpenAI: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n",
            "translated_9672.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_9699.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_6931.json: HTTP code 502 from API (<html>\n",
            "<head><title>502 Bad Gateway</title></head>\n",
            "<body>\n",
            "<center><h1>502 Bad Gateway</h1></center>\n",
            "<hr><center>nginx</center>\n",
            "</body>\n",
            "</html>\n",
            ")\n",
            "translated_9727.json: Error communicating with OpenAI: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n",
            "translated_6953.json: HTTP code 502 from API (<html>\n",
            "<head><title>502 Bad Gateway</title></head>\n",
            "<body>\n",
            "<center><h1>502 Bad Gateway</h1></center>\n",
            "<hr><center>nginx</center>\n",
            "</body>\n",
            "</html>\n",
            ")\n",
            "translated_9734.json: Error communicating with OpenAI: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n",
            "translated_9749.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_9751.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_9773.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_9802.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_9729.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_9797.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_9897.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_10044.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_10033.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_10828.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_5495.json: Request timed out: HTTPSConnectionPool(host='api.openai.com', port=443): Read timed out. (read timeout=600)\n",
            "translated_5654.json: Request timed out: HTTPSConnectionPool(host='api.openai.com', port=443): Read timed out. (read timeout=600)\n",
            "translated_11223.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_5722.json: Request timed out: HTTPSConnectionPool(host='api.openai.com', port=443): Read timed out. (read timeout=600)\n",
            "translated_5780.json: Request timed out: HTTPSConnectionPool(host='api.openai.com', port=443): Read timed out. (read timeout=600)\n",
            "translated_5787.json: Request timed out: HTTPSConnectionPool(host='api.openai.com', port=443): Read timed out. (read timeout=600)\n",
            "translated_5952.json: Request timed out: HTTPSConnectionPool(host='api.openai.com', port=443): Read timed out. (read timeout=600)\n",
            "translated_11877.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_11997.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_6479.json: Request timed out: HTTPSConnectionPool(host='api.openai.com', port=443): Read timed out. (read timeout=600)\n",
            "translated_12038.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_12431.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_12873.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_12899.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_12942.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_13125.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_13257.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_13309.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_13306.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_13354.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_13450.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_13632.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_13667.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_13741.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_13984.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_13997.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_14004.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_14086.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_14066.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_14095.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_14119.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_14348.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_14867.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_14847.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_15069.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_15266.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_15406.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_15437.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_15401.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_15458.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_15506.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_15721.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_16084.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_16155.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_16231.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_16287.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_16235.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_16317.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_16338.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_16293.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_16345.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_16570.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_16733.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_16848.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_16872.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_16853.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_16890.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_16867.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_16903.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_17104.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_17238.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_17307.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_17352.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_17356.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_17388.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_17403.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_17436.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_17491.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_17499.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_17504.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_17692.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_17958.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_17939.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_18115.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_18173.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_18190.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_18519.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_18696.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_18667.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_18809.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_18877.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_18943.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_19010.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_19047.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_19057.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_19104.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_19317.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_19318.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_19369.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_19551.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_19569.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_19797.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_19840.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_19827.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_19867.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_19841.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_19858.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_19980.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_20049.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_20109.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_20439.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_20476.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_20558.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_20579.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_20625.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_20717.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_20919.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_20934.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_21084.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_21395.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_21394.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_21400.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_21457.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_21522.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_21685.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_21698.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_21787.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_21840.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_21862.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_22257.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_22535.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_22540.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_22462.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_22554.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_22518.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_22583.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_22579.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_22809.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_22835.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_22827.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_22948.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_23396.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_23398.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_23419.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_23373.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_23444.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_23441.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_23476.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_23479.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_23451.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_23702.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_23722.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_23749.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_23785.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_23769.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_24059.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_24101.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_24088.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_23995.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_24315.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_24874.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_24929.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_24938.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_24932.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_25104.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_25227.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_25495.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_25534.json: The server had an error while processing your request. Sorry about that!\n",
            "translated_25683.json: The server had an error while processing your request. Sorry about that!\n"
          ]
        }
      ],
      "source": [
        "# Translate in parallel\n",
        "with ThreadPoolExecutor(max_workers=100) as executor:\n",
        "    futures = {executor.submit(translate_save, item, i) for i, item in enumerate(data)}\n",
        "    #for i, item in enumerate(data[:20]):\n",
        "    #  executor.submit(translate_save, item, i)\n",
        "    #for future in tqdm(as_completed(futures), total=len(futures), desc=\"Translating\"):\n",
        "    #    future.result()\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "BjnJ6ZJSehvb"
      },
      "source": [
        "## Since it doesn't succeed in one attempt, it is necessary to execute multiple times. Please try untill all files are translated. It took US $45 and 5 hours."
      ]
    },
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {
        "id": "la267FnHeNqA"
      },
      "source": [
        "## After finishing translation, merge those files into one file"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 13,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "7MZC2pfNeUXN",
        "outputId": "1e38d9e1-ff7c-4e82-af69-67cc28bf8613"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "\u001b[1;30;43mStreaming output truncated to the last 5000 lines.\u001b[0m\n",
            "22000\n",
            "22001\n",
            "22002\n",
            "22003\n",
            "22004\n",
            "22005\n",
            "22006\n",
            "22007\n",
            "22008\n",
            "22009\n",
            "22010\n",
            "22011\n",
            "22012\n",
            "22013\n",
            "22014\n",
            "22015\n",
            "22016\n",
            "22017\n",
            "22018\n",
            "22019\n",
            "22020\n",
            "22021\n",
            "22022\n",
            "22023\n",
            "22024\n",
            "22025\n",
            "22026\n",
            "22027\n",
            "22028\n",
            "22029\n",
            "22030\n",
            "22031\n",
            "22032\n",
            "22033\n",
            "22034\n",
            "22035\n",
            "22036\n",
            "22037\n",
            "22038\n",
            "22039\n",
            "22040\n",
            "22041\n",
            "22042\n",
            "22043\n",
            "22044\n",
            "22045\n",
            "22046\n",
            "22047\n",
            "22048\n",
            "22049\n",
            "22050\n",
            "22051\n",
            "22052\n",
            "22053\n",
            "22054\n",
            "22055\n",
            "22056\n",
            "22057\n",
            "22058\n",
            "22059\n",
            "22060\n",
            "22061\n",
            "22062\n",
            "22063\n",
            "22064\n",
            "22065\n",
            "22066\n",
            "22067\n",
            "22068\n",
            "22069\n",
            "22070\n",
            "22071\n",
            "22072\n",
            "22073\n",
            "22074\n",
            "22075\n",
            "22076\n",
            "22077\n",
            "22078\n",
            "22079\n",
            "22080\n",
            "22081\n",
            "22082\n",
            "22083\n",
            "22084\n",
            "22085\n",
            "22086\n",
            "22087\n",
            "22088\n",
            "22089\n",
            "22090\n",
            "22091\n",
            "22092\n",
            "22093\n",
            "22094\n",
            "22095\n",
            "22096\n",
            "22097\n",
            "22098\n",
            "22099\n",
            "22100\n",
            "22101\n",
            "22102\n",
            "22103\n",
            "22104\n",
            "22105\n",
            "22106\n",
            "22107\n",
            "22108\n",
            "22109\n",
            "22110\n",
            "22111\n",
            "22112\n",
            "22113\n",
            "22114\n",
            "22115\n",
            "22116\n",
            "22117\n",
            "22118\n",
            "22119\n",
            "22120\n",
            "22121\n",
            "22122\n",
            "22123\n",
            "22124\n",
            "22125\n",
            "22126\n",
            "22127\n",
            "22128\n",
            "22129\n",
            "22130\n",
            "22131\n",
            "22132\n",
            "22133\n",
            "22134\n",
            "22135\n",
            "22136\n",
            "22137\n",
            "22138\n",
            "22139\n",
            "22140\n",
            "22141\n",
            "22142\n",
            "22143\n",
            "22144\n",
            "22145\n",
            "22146\n",
            "22147\n",
            "22148\n",
            "22149\n",
            "22150\n",
            "22151\n",
            "22152\n",
            "22153\n",
            "22154\n",
            "22155\n",
            "22156\n",
            "22157\n",
            "22158\n",
            "22159\n",
            "22160\n",
            "22161\n",
            "22162\n",
            "22163\n",
            "22164\n",
            "22165\n",
            "22166\n",
            "22167\n",
            "22168\n",
            "22169\n",
            "22170\n",
            "22171\n",
            "22172\n",
            "22173\n",
            "22174\n",
            "22175\n",
            "22176\n",
            "22177\n",
            "22178\n",
            "22179\n",
            "22180\n",
            "22181\n",
            "22182\n",
            "22183\n",
            "22184\n",
            "22185\n",
            "22186\n",
            "22187\n",
            "22188\n",
            "22189\n",
            "22190\n",
            "22191\n",
            "22192\n",
            "22193\n",
            "22194\n",
            "22195\n",
            "22196\n",
            "22197\n",
            "22198\n",
            "22199\n",
            "22200\n",
            "22201\n",
            "22202\n",
            "22203\n",
            "22204\n",
            "22205\n",
            "22206\n",
            "22207\n",
            "22208\n",
            "22209\n",
            "22210\n",
            "22211\n",
            "22212\n",
            "22213\n",
            "22214\n",
            "22215\n",
            "22216\n",
            "22217\n",
            "22218\n",
            "22219\n",
            "22220\n",
            "22221\n",
            "22222\n",
            "22223\n",
            "22224\n",
            "22225\n",
            "22226\n",
            "22227\n",
            "22228\n",
            "22229\n",
            "22230\n",
            "22231\n",
            "22232\n",
            "22233\n",
            "22234\n",
            "22235\n",
            "22236\n",
            "22237\n",
            "22238\n",
            "22239\n",
            "22240\n",
            "22241\n",
            "22242\n",
            "22243\n",
            "22244\n",
            "22245\n",
            "22246\n",
            "22247\n",
            "22248\n",
            "22249\n",
            "22250\n",
            "22251\n",
            "22252\n",
            "22253\n",
            "22254\n",
            "22255\n",
            "22256\n",
            "22257\n",
            "22258\n",
            "22259\n",
            "22260\n",
            "22261\n",
            "22262\n",
            "22263\n",
            "22264\n",
            "22265\n",
            "22266\n",
            "22267\n",
            "22268\n",
            "22269\n",
            "22270\n",
            "22271\n",
            "22272\n",
            "22273\n",
            "22274\n",
            "22275\n",
            "22276\n",
            "22277\n",
            "22278\n",
            "22279\n",
            "22280\n",
            "22281\n",
            "22282\n",
            "22283\n",
            "22284\n",
            "22285\n",
            "22286\n",
            "22287\n",
            "22288\n",
            "22289\n",
            "22290\n",
            "22291\n",
            "22292\n",
            "22293\n",
            "22294\n",
            "22295\n",
            "22296\n",
            "22297\n",
            "22298\n",
            "22299\n",
            "22300\n",
            "22301\n",
            "22302\n",
            "22303\n",
            "22304\n",
            "22305\n",
            "22306\n",
            "22307\n",
            "22308\n",
            "22309\n",
            "22310\n",
            "22311\n",
            "22312\n",
            "22313\n",
            "22314\n",
            "22315\n",
            "22316\n",
            "22317\n",
            "22318\n",
            "22319\n",
            "22320\n",
            "22321\n",
            "22322\n",
            "22323\n",
            "22324\n",
            "22325\n",
            "22326\n",
            "22327\n",
            "22328\n",
            "22329\n",
            "22330\n",
            "22331\n",
            "22332\n",
            "22333\n",
            "22334\n",
            "22335\n",
            "22336\n",
            "22337\n",
            "22338\n",
            "22339\n",
            "22340\n",
            "22341\n",
            "22342\n",
            "22343\n",
            "22344\n",
            "22345\n",
            "22346\n",
            "22347\n",
            "22348\n",
            "22349\n",
            "22350\n",
            "22351\n",
            "22352\n",
            "22353\n",
            "22354\n",
            "22355\n",
            "22356\n",
            "22357\n",
            "22358\n",
            "22359\n",
            "22360\n",
            "22361\n",
            "22362\n",
            "22363\n",
            "22364\n",
            "22365\n",
            "22366\n",
            "22367\n",
            "22368\n",
            "22369\n",
            "22370\n",
            "22371\n",
            "22372\n",
            "22373\n",
            "22374\n",
            "22375\n",
            "22376\n",
            "22377\n",
            "22378\n",
            "22379\n",
            "22380\n",
            "22381\n",
            "22382\n",
            "22383\n",
            "22384\n",
            "22385\n",
            "22386\n",
            "22387\n",
            "22388\n",
            "22389\n",
            "22390\n",
            "22391\n",
            "22392\n",
            "22393\n",
            "22394\n",
            "22395\n",
            "22396\n",
            "22397\n",
            "22398\n",
            "22399\n",
            "22400\n",
            "22401\n",
            "22402\n",
            "22403\n",
            "22404\n",
            "22405\n",
            "22406\n",
            "22407\n",
            "22408\n",
            "22409\n",
            "22410\n",
            "22411\n",
            "22412\n",
            "22413\n",
            "22414\n",
            "22415\n",
            "22416\n",
            "22417\n",
            "22418\n",
            "22419\n",
            "22420\n",
            "22421\n",
            "22422\n",
            "22423\n",
            "22424\n",
            "22425\n",
            "22426\n",
            "22427\n",
            "22428\n",
            "22429\n",
            "22430\n",
            "22431\n",
            "22432\n",
            "22433\n",
            "22434\n",
            "22435\n",
            "22436\n",
            "22437\n",
            "22438\n",
            "22439\n",
            "22440\n",
            "22441\n",
            "22442\n",
            "22443\n",
            "22444\n",
            "22445\n",
            "22446\n",
            "22447\n",
            "22448\n",
            "22449\n",
            "22450\n",
            "22451\n",
            "22452\n",
            "22453\n",
            "22454\n",
            "22455\n",
            "22456\n",
            "22457\n",
            "22458\n",
            "22459\n",
            "22460\n",
            "22461\n",
            "22462\n",
            "22463\n",
            "22464\n",
            "22465\n",
            "22466\n",
            "22467\n",
            "22468\n",
            "22469\n",
            "22470\n",
            "22471\n",
            "22472\n",
            "22473\n",
            "22474\n",
            "22475\n",
            "22476\n",
            "22477\n",
            "22478\n",
            "22479\n",
            "22480\n",
            "22481\n",
            "22482\n",
            "22483\n",
            "22484\n",
            "22485\n",
            "22486\n",
            "22487\n",
            "22488\n",
            "22489\n",
            "22490\n",
            "22491\n",
            "22492\n",
            "22493\n",
            "22494\n",
            "22495\n",
            "22496\n",
            "22497\n",
            "22498\n",
            "22499\n",
            "22500\n",
            "22501\n",
            "22502\n",
            "22503\n",
            "22504\n",
            "22505\n",
            "22506\n",
            "22507\n",
            "22508\n",
            "22509\n",
            "22510\n",
            "22511\n",
            "22512\n",
            "22513\n",
            "22514\n",
            "22515\n",
            "22516\n",
            "22517\n",
            "22518\n",
            "22519\n",
            "22520\n",
            "22521\n",
            "22522\n",
            "22523\n",
            "22524\n",
            "22525\n",
            "22526\n",
            "22527\n",
            "22528\n",
            "22529\n",
            "22530\n",
            "22531\n",
            "22532\n",
            "22533\n",
            "22534\n",
            "22535\n",
            "22536\n",
            "22537\n",
            "22538\n",
            "22539\n",
            "22540\n",
            "22541\n",
            "22542\n",
            "22543\n",
            "22544\n",
            "22545\n",
            "22546\n",
            "22547\n",
            "22548\n",
            "22549\n",
            "22550\n",
            "22551\n",
            "22552\n",
            "22553\n",
            "22554\n",
            "22555\n",
            "22556\n",
            "22557\n",
            "22558\n",
            "22559\n",
            "22560\n",
            "22561\n",
            "22562\n",
            "22563\n",
            "22564\n",
            "22565\n",
            "22566\n",
            "22567\n",
            "22568\n",
            "22569\n",
            "22570\n",
            "22571\n",
            "22572\n",
            "22573\n",
            "22574\n",
            "22575\n",
            "22576\n",
            "22577\n",
            "22578\n",
            "22579\n",
            "22580\n",
            "22581\n",
            "22582\n",
            "22583\n",
            "22584\n",
            "22585\n",
            "22586\n",
            "22587\n",
            "22588\n",
            "22589\n",
            "22590\n",
            "22591\n",
            "22592\n",
            "22593\n",
            "22594\n",
            "22595\n",
            "22596\n",
            "22597\n",
            "22598\n",
            "22599\n",
            "22600\n",
            "22601\n",
            "22602\n",
            "22603\n",
            "22604\n",
            "22605\n",
            "22606\n",
            "22607\n",
            "22608\n",
            "22609\n",
            "22610\n",
            "22611\n",
            "22612\n",
            "22613\n",
            "22614\n",
            "22615\n",
            "22616\n",
            "22617\n",
            "22618\n",
            "22619\n",
            "22620\n",
            "22621\n",
            "22622\n",
            "22623\n",
            "22624\n",
            "22625\n",
            "22626\n",
            "22627\n",
            "22628\n",
            "22629\n",
            "22630\n",
            "22631\n",
            "22632\n",
            "22633\n",
            "22634\n",
            "22635\n",
            "22636\n",
            "22637\n",
            "22638\n",
            "22639\n",
            "22640\n",
            "22641\n",
            "22642\n",
            "22643\n",
            "22644\n",
            "22645\n",
            "22646\n",
            "22647\n",
            "22648\n",
            "22649\n",
            "22650\n",
            "22651\n",
            "22652\n",
            "22653\n",
            "22654\n",
            "22655\n",
            "22656\n",
            "22657\n",
            "22658\n",
            "22659\n",
            "22660\n",
            "22661\n",
            "22662\n",
            "22663\n",
            "22664\n",
            "22665\n",
            "22666\n",
            "22667\n",
            "22668\n",
            "22669\n",
            "22670\n",
            "22671\n",
            "22672\n",
            "22673\n",
            "22674\n",
            "22675\n",
            "22676\n",
            "22677\n",
            "22678\n",
            "22679\n",
            "22680\n",
            "22681\n",
            "22682\n",
            "22683\n",
            "22684\n",
            "22685\n",
            "22686\n",
            "22687\n",
            "22688\n",
            "22689\n",
            "22690\n",
            "22691\n",
            "22692\n",
            "22693\n",
            "22694\n",
            "22695\n",
            "22696\n",
            "22697\n",
            "22698\n",
            "22699\n",
            "22700\n",
            "22701\n",
            "22702\n",
            "22703\n",
            "22704\n",
            "22705\n",
            "22706\n",
            "22707\n",
            "22708\n",
            "22709\n",
            "22710\n",
            "22711\n",
            "22712\n",
            "22713\n",
            "22714\n",
            "22715\n",
            "22716\n",
            "22717\n",
            "22718\n",
            "22719\n",
            "22720\n",
            "22721\n",
            "22722\n",
            "22723\n",
            "22724\n",
            "22725\n",
            "22726\n",
            "22727\n",
            "22728\n",
            "22729\n",
            "22730\n",
            "22731\n",
            "22732\n",
            "22733\n",
            "22734\n",
            "22735\n",
            "22736\n",
            "22737\n",
            "22738\n",
            "22739\n",
            "22740\n",
            "22741\n",
            "22742\n",
            "22743\n",
            "22744\n",
            "22745\n",
            "22746\n",
            "22747\n",
            "22748\n",
            "22749\n",
            "22750\n",
            "22751\n",
            "22752\n",
            "22753\n",
            "22754\n",
            "22755\n",
            "22756\n",
            "22757\n",
            "22758\n",
            "22759\n",
            "22760\n",
            "22761\n",
            "22762\n",
            "22763\n",
            "22764\n",
            "22765\n",
            "22766\n",
            "22767\n",
            "22768\n",
            "22769\n",
            "22770\n",
            "22771\n",
            "22772\n",
            "22773\n",
            "22774\n",
            "22775\n",
            "22776\n",
            "22777\n",
            "22778\n",
            "22779\n",
            "22780\n",
            "22781\n",
            "22782\n",
            "22783\n",
            "22784\n",
            "22785\n",
            "22786\n",
            "22787\n",
            "22788\n",
            "22789\n",
            "22790\n",
            "22791\n",
            "22792\n",
            "22793\n",
            "22794\n",
            "22795\n",
            "22796\n",
            "22797\n",
            "22798\n",
            "22799\n",
            "22800\n",
            "22801\n",
            "22802\n",
            "22803\n",
            "22804\n",
            "22805\n",
            "22806\n",
            "22807\n",
            "22808\n",
            "22809\n",
            "22810\n",
            "22811\n",
            "22812\n",
            "22813\n",
            "22814\n",
            "22815\n",
            "22816\n",
            "22817\n",
            "22818\n",
            "22819\n",
            "22820\n",
            "22821\n",
            "22822\n",
            "22823\n",
            "22824\n",
            "22825\n",
            "22826\n",
            "22827\n",
            "22828\n",
            "22829\n",
            "22830\n",
            "22831\n",
            "22832\n",
            "22833\n",
            "22834\n",
            "22835\n",
            "22836\n",
            "22837\n",
            "22838\n",
            "22839\n",
            "22840\n",
            "22841\n",
            "22842\n",
            "22843\n",
            "22844\n",
            "22845\n",
            "22846\n",
            "22847\n",
            "22848\n",
            "22849\n",
            "22850\n",
            "22851\n",
            "22852\n",
            "22853\n",
            "22854\n",
            "22855\n",
            "22856\n",
            "22857\n",
            "22858\n",
            "22859\n",
            "22860\n",
            "22861\n",
            "22862\n",
            "22863\n",
            "22864\n",
            "22865\n",
            "22866\n",
            "22867\n",
            "22868\n",
            "22869\n",
            "22870\n",
            "22871\n",
            "22872\n",
            "22873\n",
            "22874\n",
            "22875\n",
            "22876\n",
            "22877\n",
            "22878\n",
            "22879\n",
            "22880\n",
            "22881\n",
            "22882\n",
            "22883\n",
            "22884\n",
            "22885\n",
            "22886\n",
            "22887\n",
            "22888\n",
            "22889\n",
            "22890\n",
            "22891\n",
            "22892\n",
            "22893\n",
            "22894\n",
            "22895\n",
            "22896\n",
            "22897\n",
            "22898\n",
            "22899\n",
            "22900\n",
            "22901\n",
            "22902\n",
            "22903\n",
            "22904\n",
            "22905\n",
            "22906\n",
            "22907\n",
            "22908\n",
            "22909\n",
            "22910\n",
            "22911\n",
            "22912\n",
            "22913\n",
            "22914\n",
            "22915\n",
            "22916\n",
            "22917\n",
            "22918\n",
            "22919\n",
            "22920\n",
            "22921\n",
            "22922\n",
            "22923\n",
            "22924\n",
            "22925\n",
            "22926\n",
            "22927\n",
            "22928\n",
            "22929\n",
            "22930\n",
            "22931\n",
            "22932\n",
            "22933\n",
            "22934\n",
            "22935\n",
            "22936\n",
            "22937\n",
            "22938\n",
            "22939\n",
            "22940\n",
            "22941\n",
            "22942\n",
            "22943\n",
            "22944\n",
            "22945\n",
            "22946\n",
            "22947\n",
            "22948\n",
            "22949\n",
            "22950\n",
            "22951\n",
            "22952\n",
            "22953\n",
            "22954\n",
            "22955\n",
            "22956\n",
            "22957\n",
            "22958\n",
            "22959\n",
            "22960\n",
            "22961\n",
            "22962\n",
            "22963\n",
            "22964\n",
            "22965\n",
            "22966\n",
            "22967\n",
            "22968\n",
            "22969\n",
            "22970\n",
            "22971\n",
            "22972\n",
            "22973\n",
            "22974\n",
            "22975\n",
            "22976\n",
            "22977\n",
            "22978\n",
            "22979\n",
            "22980\n",
            "22981\n",
            "22982\n",
            "22983\n",
            "22984\n",
            "22985\n",
            "22986\n",
            "22987\n",
            "22988\n",
            "22989\n",
            "22990\n",
            "22991\n",
            "22992\n",
            "22993\n",
            "22994\n",
            "22995\n",
            "22996\n",
            "22997\n",
            "22998\n",
            "22999\n",
            "23000\n",
            "23001\n",
            "23002\n",
            "23003\n",
            "23004\n",
            "23005\n",
            "23006\n",
            "23007\n",
            "23008\n",
            "23009\n",
            "23010\n",
            "23011\n",
            "23012\n",
            "23013\n",
            "23014\n",
            "23015\n",
            "23016\n",
            "23017\n",
            "23018\n",
            "23019\n",
            "23020\n",
            "23021\n",
            "23022\n",
            "23023\n",
            "23024\n",
            "23025\n",
            "23026\n",
            "23027\n",
            "23028\n",
            "23029\n",
            "23030\n",
            "23031\n",
            "23032\n",
            "23033\n",
            "23034\n",
            "23035\n",
            "23036\n",
            "23037\n",
            "23038\n",
            "23039\n",
            "23040\n",
            "23041\n",
            "23042\n",
            "23043\n",
            "23044\n",
            "23045\n",
            "23046\n",
            "23047\n",
            "23048\n",
            "23049\n",
            "23050\n",
            "23051\n",
            "23052\n",
            "23053\n",
            "23054\n",
            "23055\n",
            "23056\n",
            "23057\n",
            "23058\n",
            "23059\n",
            "23060\n",
            "23061\n",
            "23062\n",
            "23063\n",
            "23064\n",
            "23065\n",
            "23066\n",
            "23067\n",
            "23068\n",
            "23069\n",
            "23070\n",
            "23071\n",
            "23072\n",
            "23073\n",
            "23074\n",
            "23075\n",
            "23076\n",
            "23077\n",
            "23078\n",
            "23079\n",
            "23080\n",
            "23081\n",
            "23082\n",
            "23083\n",
            "23084\n",
            "23085\n",
            "23086\n",
            "23087\n",
            "23088\n",
            "23089\n",
            "23090\n",
            "23091\n",
            "23092\n",
            "23093\n",
            "23094\n",
            "23095\n",
            "23096\n",
            "23097\n",
            "23098\n",
            "23099\n",
            "23100\n",
            "23101\n",
            "23102\n",
            "23103\n",
            "23104\n",
            "23105\n",
            "23106\n",
            "23107\n",
            "23108\n",
            "23109\n",
            "23110\n",
            "23111\n",
            "23112\n",
            "23113\n",
            "23114\n",
            "23115\n",
            "23116\n",
            "23117\n",
            "23118\n",
            "23119\n",
            "23120\n",
            "23121\n",
            "23122\n",
            "23123\n",
            "23124\n",
            "23125\n",
            "23126\n",
            "23127\n",
            "23128\n",
            "23129\n",
            "23130\n",
            "23131\n",
            "23132\n",
            "23133\n",
            "23134\n",
            "23135\n",
            "23136\n",
            "23137\n",
            "23138\n",
            "23139\n",
            "23140\n",
            "23141\n",
            "23142\n",
            "23143\n",
            "23144\n",
            "23145\n",
            "23146\n",
            "23147\n",
            "23148\n",
            "23149\n",
            "23150\n",
            "23151\n",
            "23152\n",
            "23153\n",
            "23154\n",
            "23155\n",
            "23156\n",
            "23157\n",
            "23158\n",
            "23159\n",
            "23160\n",
            "23161\n",
            "23162\n",
            "23163\n",
            "23164\n",
            "23165\n",
            "23166\n",
            "23167\n",
            "23168\n",
            "23169\n",
            "23170\n",
            "23171\n",
            "23172\n",
            "23173\n",
            "23174\n",
            "23175\n",
            "23176\n",
            "23177\n",
            "23178\n",
            "23179\n",
            "23180\n",
            "23181\n",
            "23182\n",
            "23183\n",
            "23184\n",
            "23185\n",
            "23186\n",
            "23187\n",
            "23188\n",
            "23189\n",
            "23190\n",
            "23191\n",
            "23192\n",
            "23193\n",
            "23194\n",
            "23195\n",
            "23196\n",
            "23197\n",
            "23198\n",
            "23199\n",
            "23200\n",
            "23201\n",
            "23202\n",
            "23203\n",
            "23204\n",
            "23205\n",
            "23206\n",
            "23207\n",
            "23208\n",
            "23209\n",
            "23210\n",
            "23211\n",
            "23212\n",
            "23213\n",
            "23214\n",
            "23215\n",
            "23216\n",
            "23217\n",
            "23218\n",
            "23219\n",
            "23220\n",
            "23221\n",
            "23222\n",
            "23223\n",
            "23224\n",
            "23225\n",
            "23226\n",
            "23227\n",
            "23228\n",
            "23229\n",
            "23230\n",
            "23231\n",
            "23232\n",
            "23233\n",
            "23234\n",
            "23235\n",
            "23236\n",
            "23237\n",
            "23238\n",
            "23239\n",
            "23240\n",
            "23241\n",
            "23242\n",
            "23243\n",
            "23244\n",
            "23245\n",
            "23246\n",
            "23247\n",
            "23248\n",
            "23249\n",
            "23250\n",
            "23251\n",
            "23252\n",
            "23253\n",
            "23254\n",
            "23255\n",
            "23256\n",
            "23257\n",
            "23258\n",
            "23259\n",
            "23260\n",
            "23261\n",
            "23262\n",
            "23263\n",
            "23264\n",
            "23265\n",
            "23266\n",
            "23267\n",
            "23268\n",
            "23269\n",
            "23270\n",
            "23271\n",
            "23272\n",
            "23273\n",
            "23274\n",
            "23275\n",
            "23276\n",
            "23277\n",
            "23278\n",
            "23279\n",
            "23280\n",
            "23281\n",
            "23282\n",
            "23283\n",
            "23284\n",
            "23285\n",
            "23286\n",
            "23287\n",
            "23288\n",
            "23289\n",
            "23290\n",
            "23291\n",
            "23292\n",
            "23293\n",
            "23294\n",
            "23295\n",
            "23296\n",
            "23297\n",
            "23298\n",
            "23299\n",
            "23300\n",
            "23301\n",
            "23302\n",
            "23303\n",
            "23304\n",
            "23305\n",
            "23306\n",
            "23307\n",
            "23308\n",
            "23309\n",
            "23310\n",
            "23311\n",
            "23312\n",
            "23313\n",
            "23314\n",
            "23315\n",
            "23316\n",
            "23317\n",
            "23318\n",
            "23319\n",
            "23320\n",
            "23321\n",
            "23322\n",
            "23323\n",
            "23324\n",
            "23325\n",
            "23326\n",
            "23327\n",
            "23328\n",
            "23329\n",
            "23330\n",
            "23331\n",
            "23332\n",
            "23333\n",
            "23334\n",
            "23335\n",
            "23336\n",
            "23337\n",
            "23338\n",
            "23339\n",
            "23340\n",
            "23341\n",
            "23342\n",
            "23343\n",
            "23344\n",
            "23345\n",
            "23346\n",
            "23347\n",
            "23348\n",
            "23349\n",
            "23350\n",
            "23351\n",
            "23352\n",
            "23353\n",
            "23354\n",
            "23355\n",
            "23356\n",
            "23357\n",
            "23358\n",
            "23359\n",
            "23360\n",
            "23361\n",
            "23362\n",
            "23363\n",
            "23364\n",
            "23365\n",
            "23366\n",
            "23367\n",
            "23368\n",
            "23369\n",
            "23370\n",
            "23371\n",
            "23372\n",
            "23373\n",
            "23374\n",
            "23375\n",
            "23376\n",
            "23377\n",
            "23378\n",
            "23379\n",
            "23380\n",
            "23381\n",
            "23382\n",
            "23383\n",
            "23384\n",
            "23385\n",
            "23386\n",
            "23387\n",
            "23388\n",
            "23389\n",
            "23390\n",
            "23391\n",
            "23392\n",
            "23393\n",
            "23394\n",
            "23395\n",
            "23396\n",
            "23397\n",
            "23398\n",
            "23399\n",
            "23400\n",
            "23401\n",
            "23402\n",
            "23403\n",
            "23404\n",
            "23405\n",
            "23406\n",
            "23407\n",
            "23408\n",
            "23409\n",
            "23410\n",
            "23411\n",
            "23412\n",
            "23413\n",
            "23414\n",
            "23415\n",
            "23416\n",
            "23417\n",
            "23418\n",
            "23419\n",
            "23420\n",
            "23421\n",
            "23422\n",
            "23423\n",
            "23424\n",
            "23425\n",
            "23426\n",
            "23427\n",
            "23428\n",
            "23429\n",
            "23430\n",
            "23431\n",
            "23432\n",
            "23433\n",
            "23434\n",
            "23435\n",
            "23436\n",
            "23437\n",
            "23438\n",
            "23439\n",
            "23440\n",
            "23441\n",
            "23442\n",
            "23443\n",
            "23444\n",
            "23445\n",
            "23446\n",
            "23447\n",
            "23448\n",
            "23449\n",
            "23450\n",
            "23451\n",
            "23452\n",
            "23453\n",
            "23454\n",
            "23455\n",
            "23456\n",
            "23457\n",
            "23458\n",
            "23459\n",
            "23460\n",
            "23461\n",
            "23462\n",
            "23463\n",
            "23464\n",
            "23465\n",
            "23466\n",
            "23467\n",
            "23468\n",
            "23469\n",
            "23470\n",
            "23471\n",
            "23472\n",
            "23473\n",
            "23474\n",
            "23475\n",
            "23476\n",
            "23477\n",
            "23478\n",
            "23479\n",
            "23480\n",
            "23481\n",
            "23482\n",
            "23483\n",
            "23484\n",
            "23485\n",
            "23486\n",
            "23487\n",
            "23488\n",
            "23489\n",
            "23490\n",
            "23491\n",
            "23492\n",
            "23493\n",
            "23494\n",
            "23495\n",
            "23496\n",
            "23497\n",
            "23498\n",
            "23499\n",
            "23500\n",
            "23501\n",
            "23502\n",
            "23503\n",
            "23504\n",
            "23505\n",
            "23506\n",
            "23507\n",
            "23508\n",
            "23509\n",
            "23510\n",
            "23511\n",
            "23512\n",
            "23513\n",
            "23514\n",
            "23515\n",
            "23516\n",
            "23517\n",
            "23518\n",
            "23519\n",
            "23520\n",
            "23521\n",
            "23522\n",
            "23523\n",
            "23524\n",
            "23525\n",
            "23526\n",
            "23527\n",
            "23528\n",
            "23529\n",
            "23530\n",
            "23531\n",
            "23532\n",
            "23533\n",
            "23534\n",
            "23535\n",
            "23536\n",
            "23537\n",
            "23538\n",
            "23539\n",
            "23540\n",
            "23541\n",
            "23542\n",
            "23543\n",
            "23544\n",
            "23545\n",
            "23546\n",
            "23547\n",
            "23548\n",
            "23549\n",
            "23550\n",
            "23551\n",
            "23552\n",
            "23553\n",
            "23554\n",
            "23555\n",
            "23556\n",
            "23557\n",
            "23558\n",
            "23559\n",
            "23560\n",
            "23561\n",
            "23562\n",
            "23563\n",
            "23564\n",
            "23565\n",
            "23566\n",
            "23567\n",
            "23568\n",
            "23569\n",
            "23570\n",
            "23571\n",
            "23572\n",
            "23573\n",
            "23574\n",
            "23575\n",
            "23576\n",
            "23577\n",
            "23578\n",
            "23579\n",
            "23580\n",
            "23581\n",
            "23582\n",
            "23583\n",
            "23584\n",
            "23585\n",
            "23586\n",
            "23587\n",
            "23588\n",
            "23589\n",
            "23590\n",
            "23591\n",
            "23592\n",
            "23593\n",
            "23594\n",
            "23595\n",
            "23596\n",
            "23597\n",
            "23598\n",
            "23599\n",
            "23600\n",
            "23601\n",
            "23602\n",
            "23603\n",
            "23604\n",
            "23605\n",
            "23606\n",
            "23607\n",
            "23608\n",
            "23609\n",
            "23610\n",
            "23611\n",
            "23612\n",
            "23613\n",
            "23614\n",
            "23615\n",
            "23616\n",
            "23617\n",
            "23618\n",
            "23619\n",
            "23620\n",
            "23621\n",
            "23622\n",
            "23623\n",
            "23624\n",
            "23625\n",
            "23626\n",
            "23627\n",
            "23628\n",
            "23629\n",
            "23630\n",
            "23631\n",
            "23632\n",
            "23633\n",
            "23634\n",
            "23635\n",
            "23636\n",
            "23637\n",
            "23638\n",
            "23639\n",
            "23640\n",
            "23641\n",
            "23642\n",
            "23643\n",
            "23644\n",
            "23645\n",
            "23646\n",
            "23647\n",
            "23648\n",
            "23649\n",
            "23650\n",
            "23651\n",
            "23652\n",
            "23653\n",
            "23654\n",
            "23655\n",
            "23656\n",
            "23657\n",
            "23658\n",
            "23659\n",
            "23660\n",
            "23661\n",
            "23662\n",
            "23663\n",
            "23664\n",
            "23665\n",
            "23666\n",
            "23667\n",
            "23668\n",
            "23669\n",
            "23670\n",
            "23671\n",
            "23672\n",
            "23673\n",
            "23674\n",
            "23675\n",
            "23676\n",
            "23677\n",
            "23678\n",
            "23679\n",
            "23680\n",
            "23681\n",
            "23682\n",
            "23683\n",
            "23684\n",
            "23685\n",
            "23686\n",
            "23687\n",
            "23688\n",
            "23689\n",
            "23690\n",
            "23691\n",
            "23692\n",
            "23693\n",
            "23694\n",
            "23695\n",
            "23696\n",
            "23697\n",
            "23698\n",
            "23699\n",
            "23700\n",
            "23701\n",
            "23702\n",
            "23703\n",
            "23704\n",
            "23705\n",
            "23706\n",
            "23707\n",
            "23708\n",
            "23709\n",
            "23710\n",
            "23711\n",
            "23712\n",
            "23713\n",
            "23714\n",
            "23715\n",
            "23716\n",
            "23717\n",
            "23718\n",
            "23719\n",
            "23720\n",
            "23721\n",
            "23722\n",
            "23723\n",
            "23724\n",
            "23725\n",
            "23726\n",
            "23727\n",
            "23728\n",
            "23729\n",
            "23730\n",
            "23731\n",
            "23732\n",
            "23733\n",
            "23734\n",
            "23735\n",
            "23736\n",
            "23737\n",
            "23738\n",
            "23739\n",
            "23740\n",
            "23741\n",
            "23742\n",
            "23743\n",
            "23744\n",
            "23745\n",
            "23746\n",
            "23747\n",
            "23748\n",
            "23749\n",
            "23750\n",
            "23751\n",
            "23752\n",
            "23753\n",
            "23754\n",
            "23755\n",
            "23756\n",
            "23757\n",
            "23758\n",
            "23759\n",
            "23760\n",
            "23761\n",
            "23762\n",
            "23763\n",
            "23764\n",
            "23765\n",
            "23766\n",
            "23767\n",
            "23768\n",
            "23769\n",
            "23770\n",
            "23771\n",
            "23772\n",
            "23773\n",
            "23774\n",
            "23775\n",
            "23776\n",
            "23777\n",
            "23778\n",
            "23779\n",
            "23780\n",
            "23781\n",
            "23782\n",
            "23783\n",
            "23784\n",
            "23785\n",
            "23786\n",
            "23787\n",
            "23788\n",
            "23789\n",
            "23790\n",
            "23791\n",
            "23792\n",
            "23793\n",
            "23794\n",
            "23795\n",
            "23796\n",
            "23797\n",
            "23798\n",
            "23799\n",
            "23800\n",
            "23801\n",
            "23802\n",
            "23803\n",
            "23804\n",
            "23805\n",
            "23806\n",
            "23807\n",
            "23808\n",
            "23809\n",
            "23810\n",
            "23811\n",
            "23812\n",
            "23813\n",
            "23814\n",
            "23815\n",
            "23816\n",
            "23817\n",
            "23818\n",
            "23819\n",
            "23820\n",
            "23821\n",
            "23822\n",
            "23823\n",
            "23824\n",
            "23825\n",
            "23826\n",
            "23827\n",
            "23828\n",
            "23829\n",
            "23830\n",
            "23831\n",
            "23832\n",
            "23833\n",
            "23834\n",
            "23835\n",
            "23836\n",
            "23837\n",
            "23838\n",
            "23839\n",
            "23840\n",
            "23841\n",
            "23842\n",
            "23843\n",
            "23844\n",
            "23845\n",
            "23846\n",
            "23847\n",
            "23848\n",
            "23849\n",
            "23850\n",
            "23851\n",
            "23852\n",
            "23853\n",
            "23854\n",
            "23855\n",
            "23856\n",
            "23857\n",
            "23858\n",
            "23859\n",
            "23860\n",
            "23861\n",
            "23862\n",
            "23863\n",
            "23864\n",
            "23865\n",
            "23866\n",
            "23867\n",
            "23868\n",
            "23869\n",
            "23870\n",
            "23871\n",
            "23872\n",
            "23873\n",
            "23874\n",
            "23875\n",
            "23876\n",
            "23877\n",
            "23878\n",
            "23879\n",
            "23880\n",
            "23881\n",
            "23882\n",
            "23883\n",
            "23884\n",
            "23885\n",
            "23886\n",
            "23887\n",
            "23888\n",
            "23889\n",
            "23890\n",
            "23891\n",
            "23892\n",
            "23893\n",
            "23894\n",
            "23895\n",
            "23896\n",
            "23897\n",
            "23898\n",
            "23899\n",
            "23900\n",
            "23901\n",
            "23902\n",
            "23903\n",
            "23904\n",
            "23905\n",
            "23906\n",
            "23907\n",
            "23908\n",
            "23909\n",
            "23910\n",
            "23911\n",
            "23912\n",
            "23913\n",
            "23914\n",
            "23915\n",
            "23916\n",
            "23917\n",
            "23918\n",
            "23919\n",
            "23920\n",
            "23921\n",
            "23922\n",
            "23923\n",
            "23924\n",
            "23925\n",
            "23926\n",
            "23927\n",
            "23928\n",
            "23929\n",
            "23930\n",
            "23931\n",
            "23932\n",
            "23933\n",
            "23934\n",
            "23935\n",
            "23936\n",
            "23937\n",
            "23938\n",
            "23939\n",
            "23940\n",
            "23941\n",
            "23942\n",
            "23943\n",
            "23944\n",
            "23945\n",
            "23946\n",
            "23947\n",
            "23948\n",
            "23949\n",
            "23950\n",
            "23951\n",
            "23952\n",
            "23953\n",
            "23954\n",
            "23955\n",
            "23956\n",
            "23957\n",
            "23958\n",
            "23959\n",
            "23960\n",
            "23961\n",
            "23962\n",
            "23963\n",
            "23964\n",
            "23965\n",
            "23966\n",
            "23967\n",
            "23968\n",
            "23969\n",
            "23970\n",
            "23971\n",
            "23972\n",
            "23973\n",
            "23974\n",
            "23975\n",
            "23976\n",
            "23977\n",
            "23978\n",
            "23979\n",
            "23980\n",
            "23981\n",
            "23982\n",
            "23983\n",
            "23984\n",
            "23985\n",
            "23986\n",
            "23987\n",
            "23988\n",
            "23989\n",
            "23990\n",
            "23991\n",
            "23992\n",
            "23993\n",
            "23994\n",
            "23995\n",
            "23996\n",
            "23997\n",
            "23998\n",
            "23999\n",
            "24000\n",
            "24001\n",
            "24002\n",
            "24003\n",
            "24004\n",
            "24005\n",
            "24006\n",
            "24007\n",
            "24008\n",
            "24009\n",
            "24010\n",
            "24011\n",
            "24012\n",
            "24013\n",
            "24014\n",
            "24015\n",
            "24016\n",
            "24017\n",
            "24018\n",
            "24019\n",
            "24020\n",
            "24021\n",
            "24022\n",
            "24023\n",
            "24024\n",
            "24025\n",
            "24026\n",
            "24027\n",
            "24028\n",
            "24029\n",
            "24030\n",
            "24031\n",
            "24032\n",
            "24033\n",
            "24034\n",
            "24035\n",
            "24036\n",
            "24037\n",
            "24038\n",
            "24039\n",
            "24040\n",
            "24041\n",
            "24042\n",
            "24043\n",
            "24044\n",
            "24045\n",
            "24046\n",
            "24047\n",
            "24048\n",
            "24049\n",
            "24050\n",
            "24051\n",
            "24052\n",
            "24053\n",
            "24054\n",
            "24055\n",
            "24056\n",
            "24057\n",
            "24058\n",
            "24059\n",
            "24060\n",
            "24061\n",
            "24062\n",
            "24063\n",
            "24064\n",
            "24065\n",
            "24066\n",
            "24067\n",
            "24068\n",
            "24069\n",
            "24070\n",
            "24071\n",
            "24072\n",
            "24073\n",
            "24074\n",
            "24075\n",
            "24076\n",
            "24077\n",
            "24078\n",
            "24079\n",
            "24080\n",
            "24081\n",
            "24082\n",
            "24083\n",
            "24084\n",
            "24085\n",
            "24086\n",
            "24087\n",
            "24088\n",
            "24089\n",
            "24090\n",
            "24091\n",
            "24092\n",
            "24093\n",
            "24094\n",
            "24095\n",
            "24096\n",
            "24097\n",
            "24098\n",
            "24099\n",
            "24100\n",
            "24101\n",
            "24102\n",
            "24103\n",
            "24104\n",
            "24105\n",
            "24106\n",
            "24107\n",
            "24108\n",
            "24109\n",
            "24110\n",
            "24111\n",
            "24112\n",
            "24113\n",
            "24114\n",
            "24115\n",
            "24116\n",
            "24117\n",
            "24118\n",
            "24119\n",
            "24120\n",
            "24121\n",
            "24122\n",
            "24123\n",
            "24124\n",
            "24125\n",
            "24126\n",
            "24127\n",
            "24128\n",
            "24129\n",
            "24130\n",
            "24131\n",
            "24132\n",
            "24133\n",
            "24134\n",
            "24135\n",
            "24136\n",
            "24137\n",
            "24138\n",
            "24139\n",
            "24140\n",
            "24141\n",
            "24142\n",
            "24143\n",
            "24144\n",
            "24145\n",
            "24146\n",
            "24147\n",
            "24148\n",
            "24149\n",
            "24150\n",
            "24151\n",
            "24152\n",
            "24153\n",
            "24154\n",
            "24155\n",
            "24156\n",
            "24157\n",
            "24158\n",
            "24159\n",
            "24160\n",
            "24161\n",
            "24162\n",
            "24163\n",
            "24164\n",
            "24165\n",
            "24166\n",
            "24167\n",
            "24168\n",
            "24169\n",
            "24170\n",
            "24171\n",
            "24172\n",
            "24173\n",
            "24174\n",
            "24175\n",
            "24176\n",
            "24177\n",
            "24178\n",
            "24179\n",
            "24180\n",
            "24181\n",
            "24182\n",
            "24183\n",
            "24184\n",
            "24185\n",
            "24186\n",
            "24187\n",
            "24188\n",
            "24189\n",
            "24190\n",
            "24191\n",
            "24192\n",
            "24193\n",
            "24194\n",
            "24195\n",
            "24196\n",
            "24197\n",
            "24198\n",
            "24199\n",
            "24200\n",
            "24201\n",
            "24202\n",
            "24203\n",
            "24204\n",
            "24205\n",
            "24206\n",
            "24207\n",
            "24208\n",
            "24209\n",
            "24210\n",
            "24211\n",
            "24212\n",
            "24213\n",
            "24214\n",
            "24215\n",
            "24216\n",
            "24217\n",
            "24218\n",
            "24219\n",
            "24220\n",
            "24221\n",
            "24222\n",
            "24223\n",
            "24224\n",
            "24225\n",
            "24226\n",
            "24227\n",
            "24228\n",
            "24229\n",
            "24230\n",
            "24231\n",
            "24232\n",
            "24233\n",
            "24234\n",
            "24235\n",
            "24236\n",
            "24237\n",
            "24238\n",
            "24239\n",
            "24240\n",
            "24241\n",
            "24242\n",
            "24243\n",
            "24244\n",
            "24245\n",
            "24246\n",
            "24247\n",
            "24248\n",
            "24249\n",
            "24250\n",
            "24251\n",
            "24252\n",
            "24253\n",
            "24254\n",
            "24255\n",
            "24256\n",
            "24257\n",
            "24258\n",
            "24259\n",
            "24260\n",
            "24261\n",
            "24262\n",
            "24263\n",
            "24264\n",
            "24265\n",
            "24266\n",
            "24267\n",
            "24268\n",
            "24269\n",
            "24270\n",
            "24271\n",
            "24272\n",
            "24273\n",
            "24274\n",
            "24275\n",
            "24276\n",
            "24277\n",
            "24278\n",
            "24279\n",
            "24280\n",
            "24281\n",
            "24282\n",
            "24283\n",
            "24284\n",
            "24285\n",
            "24286\n",
            "24287\n",
            "24288\n",
            "24289\n",
            "24290\n",
            "24291\n",
            "24292\n",
            "24293\n",
            "24294\n",
            "24295\n",
            "24296\n",
            "24297\n",
            "24298\n",
            "24299\n",
            "24300\n",
            "24301\n",
            "24302\n",
            "24303\n",
            "24304\n",
            "24305\n",
            "24306\n",
            "24307\n",
            "24308\n",
            "24309\n",
            "24310\n",
            "24311\n",
            "24312\n",
            "24313\n",
            "24314\n",
            "24315\n",
            "24316\n",
            "24317\n",
            "24318\n",
            "24319\n",
            "24320\n",
            "24321\n",
            "24322\n",
            "24323\n",
            "24324\n",
            "24325\n",
            "24326\n",
            "24327\n",
            "24328\n",
            "24329\n",
            "24330\n",
            "24331\n",
            "24332\n",
            "24333\n",
            "24334\n",
            "24335\n",
            "24336\n",
            "24337\n",
            "24338\n",
            "24339\n",
            "24340\n",
            "24341\n",
            "24342\n",
            "24343\n",
            "24344\n",
            "24345\n",
            "24346\n",
            "24347\n",
            "24348\n",
            "24349\n",
            "24350\n",
            "24351\n",
            "24352\n",
            "24353\n",
            "24354\n",
            "24355\n",
            "24356\n",
            "24357\n",
            "24358\n",
            "24359\n",
            "24360\n",
            "24361\n",
            "24362\n",
            "24363\n",
            "24364\n",
            "24365\n",
            "24366\n",
            "24367\n",
            "24368\n",
            "24369\n",
            "24370\n",
            "24371\n",
            "24372\n",
            "24373\n",
            "24374\n",
            "24375\n",
            "24376\n",
            "24377\n",
            "24378\n",
            "24379\n",
            "24380\n",
            "24381\n",
            "24382\n",
            "24383\n",
            "24384\n",
            "24385\n",
            "24386\n",
            "24387\n",
            "24388\n",
            "24389\n",
            "24390\n",
            "24391\n",
            "24392\n",
            "24393\n",
            "24394\n",
            "24395\n",
            "24396\n",
            "24397\n",
            "24398\n",
            "24399\n",
            "24400\n",
            "24401\n",
            "24402\n",
            "24403\n",
            "24404\n",
            "24405\n",
            "24406\n",
            "24407\n",
            "24408\n",
            "24409\n",
            "24410\n",
            "24411\n",
            "24412\n",
            "24413\n",
            "24414\n",
            "24415\n",
            "24416\n",
            "24417\n",
            "24418\n",
            "24419\n",
            "24420\n",
            "24421\n",
            "24422\n",
            "24423\n",
            "24424\n",
            "24425\n",
            "24426\n",
            "24427\n",
            "24428\n",
            "24429\n",
            "24430\n",
            "24431\n",
            "24432\n",
            "24433\n",
            "24434\n",
            "24435\n",
            "24436\n",
            "24437\n",
            "24438\n",
            "24439\n",
            "24440\n",
            "24441\n",
            "24442\n",
            "24443\n",
            "24444\n",
            "24445\n",
            "24446\n",
            "24447\n",
            "24448\n",
            "24449\n",
            "24450\n",
            "24451\n",
            "24452\n",
            "24453\n",
            "24454\n",
            "24455\n",
            "24456\n",
            "24457\n",
            "24458\n",
            "24459\n",
            "24460\n",
            "24461\n",
            "24462\n",
            "24463\n",
            "24464\n",
            "24465\n",
            "24466\n",
            "24467\n",
            "24468\n",
            "24469\n",
            "24470\n",
            "24471\n",
            "24472\n",
            "24473\n",
            "24474\n",
            "24475\n",
            "24476\n",
            "24477\n",
            "24478\n",
            "24479\n",
            "24480\n",
            "24481\n",
            "24482\n",
            "24483\n",
            "24484\n",
            "24485\n",
            "24486\n",
            "24487\n",
            "24488\n",
            "24489\n",
            "24490\n",
            "24491\n",
            "24492\n",
            "24493\n",
            "24494\n",
            "24495\n",
            "24496\n",
            "24497\n",
            "24498\n",
            "24499\n",
            "24500\n",
            "24501\n",
            "24502\n",
            "24503\n",
            "24504\n",
            "24505\n",
            "24506\n",
            "24507\n",
            "24508\n",
            "24509\n",
            "24510\n",
            "24511\n",
            "24512\n",
            "24513\n",
            "24514\n",
            "24515\n",
            "24516\n",
            "24517\n",
            "24518\n",
            "24519\n",
            "24520\n",
            "24521\n",
            "24522\n",
            "24523\n",
            "24524\n",
            "24525\n",
            "24526\n",
            "24527\n",
            "24528\n",
            "24529\n",
            "24530\n",
            "24531\n",
            "24532\n",
            "24533\n",
            "24534\n",
            "24535\n",
            "24536\n",
            "24537\n",
            "24538\n",
            "24539\n",
            "24540\n",
            "24541\n",
            "24542\n",
            "24543\n",
            "24544\n",
            "24545\n",
            "24546\n",
            "24547\n",
            "24548\n",
            "24549\n",
            "24550\n",
            "24551\n",
            "24552\n",
            "24553\n",
            "24554\n",
            "24555\n",
            "24556\n",
            "24557\n",
            "24558\n",
            "24559\n",
            "24560\n",
            "24561\n",
            "24562\n",
            "24563\n",
            "24564\n",
            "24565\n",
            "24566\n",
            "24567\n",
            "24568\n",
            "24569\n",
            "24570\n",
            "24571\n",
            "24572\n",
            "24573\n",
            "24574\n",
            "24575\n",
            "24576\n",
            "24577\n",
            "24578\n",
            "24579\n",
            "24580\n",
            "24581\n",
            "24582\n",
            "24583\n",
            "24584\n",
            "24585\n",
            "24586\n",
            "24587\n",
            "24588\n",
            "24589\n",
            "24590\n",
            "24591\n",
            "24592\n",
            "24593\n",
            "24594\n",
            "24595\n",
            "24596\n",
            "24597\n",
            "24598\n",
            "24599\n",
            "24600\n",
            "24601\n",
            "24602\n",
            "24603\n",
            "24604\n",
            "24605\n",
            "24606\n",
            "24607\n",
            "24608\n",
            "24609\n",
            "24610\n",
            "24611\n",
            "24612\n",
            "24613\n",
            "24614\n",
            "24615\n",
            "24616\n",
            "24617\n",
            "24618\n",
            "24619\n",
            "24620\n",
            "24621\n",
            "24622\n",
            "24623\n",
            "24624\n",
            "24625\n",
            "24626\n",
            "24627\n",
            "24628\n",
            "24629\n",
            "24630\n",
            "24631\n",
            "24632\n",
            "24633\n",
            "24634\n",
            "24635\n",
            "24636\n",
            "24637\n",
            "24638\n",
            "24639\n",
            "24640\n",
            "24641\n",
            "24642\n",
            "24643\n",
            "24644\n",
            "24645\n",
            "24646\n",
            "24647\n",
            "24648\n",
            "24649\n",
            "24650\n",
            "24651\n",
            "24652\n",
            "24653\n",
            "24654\n",
            "24655\n",
            "24656\n",
            "24657\n",
            "24658\n",
            "24659\n",
            "24660\n",
            "24661\n",
            "24662\n",
            "24663\n",
            "24664\n",
            "24665\n",
            "24666\n",
            "24667\n",
            "24668\n",
            "24669\n",
            "24670\n",
            "24671\n",
            "24672\n",
            "24673\n",
            "24674\n",
            "24675\n",
            "24676\n",
            "24677\n",
            "24678\n",
            "24679\n",
            "24680\n",
            "24681\n",
            "24682\n",
            "24683\n",
            "24684\n",
            "24685\n",
            "24686\n",
            "24687\n",
            "24688\n",
            "24689\n",
            "24690\n",
            "24691\n",
            "24692\n",
            "24693\n",
            "24694\n",
            "24695\n",
            "24696\n",
            "24697\n",
            "24698\n",
            "24699\n",
            "24700\n",
            "24701\n",
            "24702\n",
            "24703\n",
            "24704\n",
            "24705\n",
            "24706\n",
            "24707\n",
            "24708\n",
            "24709\n",
            "24710\n",
            "24711\n",
            "24712\n",
            "24713\n",
            "24714\n",
            "24715\n",
            "24716\n",
            "24717\n",
            "24718\n",
            "24719\n",
            "24720\n",
            "24721\n",
            "24722\n",
            "24723\n",
            "24724\n",
            "24725\n",
            "24726\n",
            "24727\n",
            "24728\n",
            "24729\n",
            "24730\n",
            "24731\n",
            "24732\n",
            "24733\n",
            "24734\n",
            "24735\n",
            "24736\n",
            "24737\n",
            "24738\n",
            "24739\n",
            "24740\n",
            "24741\n",
            "24742\n",
            "24743\n",
            "24744\n",
            "24745\n",
            "24746\n",
            "24747\n",
            "24748\n",
            "24749\n",
            "24750\n",
            "24751\n",
            "24752\n",
            "24753\n",
            "24754\n",
            "24755\n",
            "24756\n",
            "24757\n",
            "24758\n",
            "24759\n",
            "24760\n",
            "24761\n",
            "24762\n",
            "24763\n",
            "24764\n",
            "24765\n",
            "24766\n",
            "24767\n",
            "24768\n",
            "24769\n",
            "24770\n",
            "24771\n",
            "24772\n",
            "24773\n",
            "24774\n",
            "24775\n",
            "24776\n",
            "24777\n",
            "24778\n",
            "24779\n",
            "24780\n",
            "24781\n",
            "24782\n",
            "24783\n",
            "24784\n",
            "24785\n",
            "24786\n",
            "24787\n",
            "24788\n",
            "24789\n",
            "24790\n",
            "24791\n",
            "24792\n",
            "24793\n",
            "24794\n",
            "24795\n",
            "24796\n",
            "24797\n",
            "24798\n",
            "24799\n",
            "24800\n",
            "24801\n",
            "24802\n",
            "24803\n",
            "24804\n",
            "24805\n",
            "24806\n",
            "24807\n",
            "24808\n",
            "24809\n",
            "24810\n",
            "24811\n",
            "24812\n",
            "24813\n",
            "24814\n",
            "24815\n",
            "24816\n",
            "24817\n",
            "24818\n",
            "24819\n",
            "24820\n",
            "24821\n",
            "24822\n",
            "24823\n",
            "24824\n",
            "24825\n",
            "24826\n",
            "24827\n",
            "24828\n",
            "24829\n",
            "24830\n",
            "24831\n",
            "24832\n",
            "24833\n",
            "24834\n",
            "24835\n",
            "24836\n",
            "24837\n",
            "24838\n",
            "24839\n",
            "24840\n",
            "24841\n",
            "24842\n",
            "24843\n",
            "24844\n",
            "24845\n",
            "24846\n",
            "24847\n",
            "24848\n",
            "24849\n",
            "24850\n",
            "24851\n",
            "24852\n",
            "24853\n",
            "24854\n",
            "24855\n",
            "24856\n",
            "24857\n",
            "24858\n",
            "24859\n",
            "24860\n",
            "24861\n",
            "24862\n",
            "24863\n",
            "24864\n",
            "24865\n",
            "24866\n",
            "24867\n",
            "24868\n",
            "24869\n",
            "24870\n",
            "24871\n",
            "24872\n",
            "24873\n",
            "24874\n",
            "24875\n",
            "24876\n",
            "24877\n",
            "24878\n",
            "24879\n",
            "24880\n",
            "24881\n",
            "24882\n",
            "24883\n",
            "24884\n",
            "24885\n",
            "24886\n",
            "24887\n",
            "24888\n",
            "24889\n",
            "24890\n",
            "24891\n",
            "24892\n",
            "24893\n",
            "24894\n",
            "24895\n",
            "24896\n",
            "24897\n",
            "24898\n",
            "24899\n",
            "24900\n",
            "24901\n",
            "24902\n",
            "24903\n",
            "24904\n",
            "24905\n",
            "24906\n",
            "24907\n",
            "24908\n",
            "24909\n",
            "24910\n",
            "24911\n",
            "24912\n",
            "24913\n",
            "24914\n",
            "24915\n",
            "24916\n",
            "24917\n",
            "24918\n",
            "24919\n",
            "24920\n",
            "24921\n",
            "24922\n",
            "24923\n",
            "24924\n",
            "24925\n",
            "24926\n",
            "24927\n",
            "24928\n",
            "24929\n",
            "24930\n",
            "24931\n",
            "24932\n",
            "24933\n",
            "24934\n",
            "24935\n",
            "24936\n",
            "24937\n",
            "24938\n",
            "24939\n",
            "24940\n",
            "24941\n",
            "24942\n",
            "24943\n",
            "24944\n",
            "24945\n",
            "24946\n",
            "24947\n",
            "24948\n",
            "24949\n",
            "24950\n",
            "24951\n",
            "24952\n",
            "24953\n",
            "24954\n",
            "24955\n",
            "24956\n",
            "24957\n",
            "24958\n",
            "24959\n",
            "24960\n",
            "24961\n",
            "24962\n",
            "24963\n",
            "24964\n",
            "24965\n",
            "24966\n",
            "24967\n",
            "24968\n",
            "24969\n",
            "24970\n",
            "24971\n",
            "24972\n",
            "24973\n",
            "24974\n",
            "24975\n",
            "24976\n",
            "24977\n",
            "24978\n",
            "24979\n",
            "24980\n",
            "24981\n",
            "24982\n",
            "24983\n",
            "24984\n",
            "24985\n",
            "24986\n",
            "24987\n",
            "24988\n",
            "24989\n",
            "24990\n",
            "24991\n",
            "24992\n",
            "24993\n",
            "24994\n",
            "24995\n",
            "24996\n",
            "24997\n",
            "24998\n",
            "24999\n",
            "25000\n",
            "25001\n",
            "25002\n",
            "25003\n",
            "25004\n",
            "25005\n",
            "25006\n",
            "25007\n",
            "25008\n",
            "25009\n",
            "25010\n",
            "25011\n",
            "25012\n",
            "25013\n",
            "25014\n",
            "25015\n",
            "25016\n",
            "25017\n",
            "25018\n",
            "25019\n",
            "25020\n",
            "25021\n",
            "25022\n",
            "25023\n",
            "25024\n",
            "25025\n",
            "25026\n",
            "25027\n",
            "25028\n",
            "25029\n",
            "25030\n",
            "25031\n",
            "25032\n",
            "25033\n",
            "25034\n",
            "25035\n",
            "25036\n",
            "25037\n",
            "25038\n",
            "25039\n",
            "25040\n",
            "25041\n",
            "25042\n",
            "25043\n",
            "25044\n",
            "25045\n",
            "25046\n",
            "25047\n",
            "25048\n",
            "25049\n",
            "25050\n",
            "25051\n",
            "25052\n",
            "25053\n",
            "25054\n",
            "25055\n",
            "25056\n",
            "25057\n",
            "25058\n",
            "25059\n",
            "25060\n",
            "25061\n",
            "25062\n",
            "25063\n",
            "25064\n",
            "25065\n",
            "25066\n",
            "25067\n",
            "25068\n",
            "25069\n",
            "25070\n",
            "25071\n",
            "25072\n",
            "25073\n",
            "25074\n",
            "25075\n",
            "25076\n",
            "25077\n",
            "25078\n",
            "25079\n",
            "25080\n",
            "25081\n",
            "25082\n",
            "25083\n",
            "25084\n",
            "25085\n",
            "25086\n",
            "25087\n",
            "25088\n",
            "25089\n",
            "25090\n",
            "25091\n",
            "25092\n",
            "25093\n",
            "25094\n",
            "25095\n",
            "25096\n",
            "25097\n",
            "25098\n",
            "25099\n",
            "25100\n",
            "25101\n",
            "25102\n",
            "25103\n",
            "25104\n",
            "25105\n",
            "25106\n",
            "25107\n",
            "25108\n",
            "25109\n",
            "25110\n",
            "25111\n",
            "25112\n",
            "25113\n",
            "25114\n",
            "25115\n",
            "25116\n",
            "25117\n",
            "25118\n",
            "25119\n",
            "25120\n",
            "25121\n",
            "25122\n",
            "25123\n",
            "25124\n",
            "25125\n",
            "25126\n",
            "25127\n",
            "25128\n",
            "25129\n",
            "25130\n",
            "25131\n",
            "25132\n",
            "25133\n",
            "25134\n",
            "25135\n",
            "25136\n",
            "25137\n",
            "25138\n",
            "25139\n",
            "25140\n",
            "25141\n",
            "25142\n",
            "25143\n",
            "25144\n",
            "25145\n",
            "25146\n",
            "25147\n",
            "25148\n",
            "25149\n",
            "25150\n",
            "25151\n",
            "25152\n",
            "25153\n",
            "25154\n",
            "25155\n",
            "25156\n",
            "25157\n",
            "25158\n",
            "25159\n",
            "25160\n",
            "25161\n",
            "25162\n",
            "25163\n",
            "25164\n",
            "25165\n",
            "25166\n",
            "25167\n",
            "25168\n",
            "25169\n",
            "25170\n",
            "25171\n",
            "25172\n",
            "25173\n",
            "25174\n",
            "25175\n",
            "25176\n",
            "25177\n",
            "25178\n",
            "25179\n",
            "25180\n",
            "25181\n",
            "25182\n",
            "25183\n",
            "25184\n",
            "25185\n",
            "25186\n",
            "25187\n",
            "25188\n",
            "25189\n",
            "25190\n",
            "25191\n",
            "25192\n",
            "25193\n",
            "25194\n",
            "25195\n",
            "25196\n",
            "25197\n",
            "25198\n",
            "25199\n",
            "25200\n",
            "25201\n",
            "25202\n",
            "25203\n",
            "25204\n",
            "25205\n",
            "25206\n",
            "25207\n",
            "25208\n",
            "25209\n",
            "25210\n",
            "25211\n",
            "25212\n",
            "25213\n",
            "25214\n",
            "25215\n",
            "25216\n",
            "25217\n",
            "25218\n",
            "25219\n",
            "25220\n",
            "25221\n",
            "25222\n",
            "25223\n",
            "25224\n",
            "25225\n",
            "25226\n",
            "25227\n",
            "25228\n",
            "25229\n",
            "25230\n",
            "25231\n",
            "25232\n",
            "25233\n",
            "25234\n",
            "25235\n",
            "25236\n",
            "25237\n",
            "25238\n",
            "25239\n",
            "25240\n",
            "25241\n",
            "25242\n",
            "25243\n",
            "25244\n",
            "25245\n",
            "25246\n",
            "25247\n",
            "25248\n",
            "25249\n",
            "25250\n",
            "25251\n",
            "25252\n",
            "25253\n",
            "25254\n",
            "25255\n",
            "25256\n",
            "25257\n",
            "25258\n",
            "25259\n",
            "25260\n",
            "25261\n",
            "25262\n",
            "25263\n",
            "25264\n",
            "25265\n",
            "25266\n",
            "25267\n",
            "25268\n",
            "25269\n",
            "25270\n",
            "25271\n",
            "25272\n",
            "25273\n",
            "25274\n",
            "25275\n",
            "25276\n",
            "25277\n",
            "25278\n",
            "25279\n",
            "25280\n",
            "25281\n",
            "25282\n",
            "25283\n",
            "25284\n",
            "25285\n",
            "25286\n",
            "25287\n",
            "25288\n",
            "25289\n",
            "25290\n",
            "25291\n",
            "25292\n",
            "25293\n",
            "25294\n",
            "25295\n",
            "25296\n",
            "25297\n",
            "25298\n",
            "25299\n",
            "25300\n",
            "25301\n",
            "25302\n",
            "25303\n",
            "25304\n",
            "25305\n",
            "25306\n",
            "25307\n",
            "25308\n",
            "25309\n",
            "25310\n",
            "25311\n",
            "25312\n",
            "25313\n",
            "25314\n",
            "25315\n",
            "25316\n",
            "25317\n",
            "25318\n",
            "25319\n",
            "25320\n",
            "25321\n",
            "25322\n",
            "25323\n",
            "25324\n",
            "25325\n",
            "25326\n",
            "25327\n",
            "25328\n",
            "25329\n",
            "25330\n",
            "25331\n",
            "25332\n",
            "25333\n",
            "25334\n",
            "25335\n",
            "25336\n",
            "25337\n",
            "25338\n",
            "25339\n",
            "25340\n",
            "25341\n",
            "25342\n",
            "25343\n",
            "25344\n",
            "25345\n",
            "25346\n",
            "25347\n",
            "25348\n",
            "25349\n",
            "25350\n",
            "25351\n",
            "25352\n",
            "25353\n",
            "25354\n",
            "25355\n",
            "25356\n",
            "25357\n",
            "25358\n",
            "25359\n",
            "25360\n",
            "25361\n",
            "25362\n",
            "25363\n",
            "25364\n",
            "25365\n",
            "25366\n",
            "25367\n",
            "25368\n",
            "25369\n",
            "25370\n",
            "25371\n",
            "25372\n",
            "25373\n",
            "25374\n",
            "25375\n",
            "25376\n",
            "25377\n",
            "25378\n",
            "25379\n",
            "25380\n",
            "25381\n",
            "25382\n",
            "25383\n",
            "25384\n",
            "25385\n",
            "25386\n",
            "25387\n",
            "25388\n",
            "25389\n",
            "25390\n",
            "25391\n",
            "25392\n",
            "25393\n",
            "25394\n",
            "25395\n",
            "25396\n",
            "25397\n",
            "25398\n",
            "25399\n",
            "25400\n",
            "25401\n",
            "25402\n",
            "25403\n",
            "25404\n",
            "25405\n",
            "25406\n",
            "25407\n",
            "25408\n",
            "25409\n",
            "25410\n",
            "25411\n",
            "25412\n",
            "25413\n",
            "25414\n",
            "25415\n",
            "25416\n",
            "25417\n",
            "25418\n",
            "25419\n",
            "25420\n",
            "25421\n",
            "25422\n",
            "25423\n",
            "25424\n",
            "25425\n",
            "25426\n",
            "25427\n",
            "25428\n",
            "25429\n",
            "25430\n",
            "25431\n",
            "25432\n",
            "25433\n",
            "25434\n",
            "25435\n",
            "25436\n",
            "25437\n",
            "25438\n",
            "25439\n",
            "25440\n",
            "25441\n",
            "25442\n",
            "25443\n",
            "25444\n",
            "25445\n",
            "25446\n",
            "25447\n",
            "25448\n",
            "25449\n",
            "25450\n",
            "25451\n",
            "25452\n",
            "25453\n",
            "25454\n",
            "25455\n",
            "25456\n",
            "25457\n",
            "25458\n",
            "25459\n",
            "25460\n",
            "25461\n",
            "25462\n",
            "25463\n",
            "25464\n",
            "25465\n",
            "25466\n",
            "25467\n",
            "25468\n",
            "25469\n",
            "25470\n",
            "25471\n",
            "25472\n",
            "25473\n",
            "25474\n",
            "25475\n",
            "25476\n",
            "25477\n",
            "25478\n",
            "25479\n",
            "25480\n",
            "25481\n",
            "25482\n",
            "25483\n",
            "25484\n",
            "25485\n",
            "25486\n",
            "25487\n",
            "25488\n",
            "25489\n",
            "25490\n",
            "25491\n",
            "25492\n",
            "25493\n",
            "25494\n",
            "25495\n",
            "25496\n",
            "25497\n",
            "25498\n",
            "25499\n",
            "25500\n",
            "25501\n",
            "25502\n",
            "25503\n",
            "25504\n",
            "25505\n",
            "25506\n",
            "25507\n",
            "25508\n",
            "25509\n",
            "25510\n",
            "25511\n",
            "25512\n",
            "25513\n",
            "25514\n",
            "25515\n",
            "25516\n",
            "25517\n",
            "25518\n",
            "25519\n",
            "25520\n",
            "25521\n",
            "25522\n",
            "25523\n",
            "25524\n",
            "25525\n",
            "25526\n",
            "25527\n",
            "25528\n",
            "25529\n",
            "25530\n",
            "25531\n",
            "25532\n",
            "25533\n",
            "25534\n",
            "25535\n",
            "25536\n",
            "25537\n",
            "25538\n",
            "25539\n",
            "25540\n",
            "25541\n",
            "25542\n",
            "25543\n",
            "25544\n",
            "25545\n",
            "25546\n",
            "25547\n",
            "25548\n",
            "25549\n",
            "25550\n",
            "25551\n",
            "25552\n",
            "25553\n",
            "25554\n",
            "25555\n",
            "25556\n",
            "25557\n",
            "25558\n",
            "25559\n",
            "25560\n",
            "25561\n",
            "25562\n",
            "25563\n",
            "25564\n",
            "25565\n",
            "25566\n",
            "25567\n",
            "25568\n",
            "25569\n",
            "25570\n",
            "25571\n",
            "25572\n",
            "25573\n",
            "25574\n",
            "25575\n",
            "25576\n",
            "25577\n",
            "25578\n",
            "25579\n",
            "25580\n",
            "25581\n",
            "25582\n",
            "25583\n",
            "25584\n",
            "25585\n",
            "25586\n",
            "25587\n",
            "25588\n",
            "25589\n",
            "25590\n",
            "25591\n",
            "25592\n",
            "25593\n",
            "25594\n",
            "25595\n",
            "25596\n",
            "25597\n",
            "25598\n",
            "25599\n",
            "25600\n",
            "25601\n",
            "25602\n",
            "25603\n",
            "25604\n",
            "25605\n",
            "25606\n",
            "25607\n",
            "25608\n",
            "25609\n",
            "25610\n",
            "25611\n",
            "25612\n",
            "25613\n",
            "25614\n",
            "25615\n",
            "25616\n",
            "25617\n",
            "25618\n",
            "25619\n",
            "25620\n",
            "25621\n",
            "25622\n",
            "25623\n",
            "25624\n",
            "25625\n",
            "25626\n",
            "25627\n",
            "25628\n",
            "25629\n",
            "25630\n",
            "25631\n",
            "25632\n",
            "25633\n",
            "25634\n",
            "25635\n",
            "25636\n",
            "25637\n",
            "25638\n",
            "25639\n",
            "25640\n",
            "25641\n",
            "25642\n",
            "25643\n",
            "25644\n",
            "25645\n",
            "25646\n",
            "25647\n",
            "25648\n",
            "25649\n",
            "25650\n",
            "25651\n",
            "25652\n",
            "25653\n",
            "25654\n",
            "25655\n",
            "25656\n",
            "25657\n",
            "25658\n",
            "25659\n",
            "25660\n",
            "25661\n",
            "25662\n",
            "25663\n",
            "25664\n",
            "25665\n",
            "25666\n",
            "25667\n",
            "25668\n",
            "25669\n",
            "25670\n",
            "25671\n",
            "25672\n",
            "25673\n",
            "25674\n",
            "25675\n",
            "25676\n",
            "25677\n",
            "25678\n",
            "25679\n",
            "25680\n",
            "25681\n",
            "25682\n",
            "25683\n",
            "25684\n",
            "25685\n",
            "25686\n",
            "25687\n",
            "25688\n",
            "25689\n",
            "25690\n",
            "25691\n",
            "25692\n",
            "25693\n",
            "25694\n",
            "25695\n",
            "25696\n",
            "25697\n",
            "25698\n",
            "25699\n",
            "25700\n",
            "25701\n",
            "25702\n",
            "25703\n",
            "25704\n",
            "25705\n",
            "25706\n",
            "25707\n",
            "25708\n",
            "25709\n",
            "25710\n",
            "25711\n",
            "25712\n",
            "25713\n",
            "25714\n",
            "25715\n",
            "25716\n",
            "25717\n",
            "25718\n",
            "25719\n",
            "25720\n",
            "25721\n",
            "25722\n",
            "25723\n",
            "25724\n",
            "25725\n",
            "25726\n",
            "25727\n",
            "25728\n",
            "25729\n",
            "25730\n",
            "25731\n",
            "25732\n",
            "25733\n",
            "25734\n",
            "25735\n",
            "25736\n",
            "25737\n",
            "25738\n",
            "25739\n",
            "25740\n",
            "25741\n",
            "25742\n",
            "25743\n",
            "25744\n",
            "25745\n",
            "25746\n",
            "25747\n",
            "25748\n",
            "25749\n",
            "25750\n",
            "25751\n",
            "25752\n",
            "25753\n",
            "25754\n",
            "25755\n",
            "25756\n",
            "25757\n",
            "25758\n",
            "25759\n",
            "25760\n",
            "25761\n",
            "25762\n",
            "25763\n",
            "25764\n",
            "25765\n",
            "25766\n",
            "25767\n",
            "25768\n",
            "25769\n",
            "25770\n",
            "25771\n",
            "25772\n",
            "25773\n",
            "25774\n",
            "25775\n",
            "25776\n",
            "25777\n",
            "25778\n",
            "25779\n",
            "25780\n",
            "25781\n",
            "25782\n",
            "25783\n",
            "25784\n",
            "25785\n",
            "25786\n",
            "25787\n",
            "25788\n",
            "25789\n",
            "25790\n",
            "25791\n",
            "25792\n",
            "25793\n",
            "25794\n",
            "25795\n",
            "25796\n",
            "25797\n",
            "25798\n",
            "25799\n",
            "25800\n",
            "25801\n",
            "25802\n",
            "25803\n",
            "25804\n",
            "25805\n",
            "25806\n",
            "25807\n",
            "25808\n",
            "25809\n",
            "25810\n",
            "25811\n",
            "25812\n",
            "25813\n",
            "25814\n",
            "25815\n",
            "25816\n",
            "25817\n",
            "25818\n",
            "25819\n",
            "25820\n",
            "25821\n",
            "25822\n",
            "25823\n",
            "25824\n",
            "25825\n",
            "25826\n",
            "25827\n",
            "25828\n",
            "25829\n",
            "25830\n",
            "25831\n",
            "25832\n",
            "25833\n",
            "25834\n",
            "25835\n",
            "25836\n",
            "25837\n",
            "25838\n",
            "25839\n",
            "25840\n",
            "25841\n",
            "25842\n",
            "25843\n",
            "25844\n",
            "25845\n",
            "25846\n",
            "25847\n",
            "25848\n",
            "25849\n",
            "25850\n",
            "25851\n",
            "25852\n",
            "25853\n",
            "25854\n",
            "25855\n",
            "25856\n",
            "25857\n",
            "25858\n",
            "25859\n",
            "25860\n",
            "25861\n",
            "25862\n",
            "25863\n",
            "25864\n",
            "25865\n",
            "25866\n",
            "25867\n",
            "25868\n",
            "25869\n",
            "25870\n",
            "25871\n",
            "25872\n",
            "25873\n",
            "25874\n",
            "25875\n",
            "25876\n",
            "25877\n",
            "25878\n",
            "25879\n",
            "25880\n",
            "25881\n",
            "25882\n",
            "25883\n",
            "25884\n",
            "25885\n",
            "25886\n",
            "25887\n",
            "25888\n",
            "25889\n",
            "25890\n",
            "25891\n",
            "25892\n",
            "25893\n",
            "25894\n",
            "25895\n",
            "25896\n",
            "25897\n",
            "25898\n",
            "25899\n",
            "25900\n",
            "25901\n",
            "25902\n",
            "25903\n",
            "25904\n",
            "25905\n",
            "25906\n",
            "25907\n",
            "25908\n",
            "25909\n",
            "25910\n",
            "25911\n",
            "25912\n",
            "25913\n",
            "25914\n",
            "25915\n",
            "25916\n",
            "25917\n",
            "25918\n",
            "25919\n",
            "25920\n",
            "25921\n",
            "25922\n",
            "25923\n",
            "25924\n",
            "25925\n",
            "25926\n",
            "25927\n",
            "25928\n",
            "25929\n",
            "25930\n",
            "25931\n",
            "25932\n",
            "25933\n",
            "25934\n",
            "25935\n",
            "25936\n",
            "25937\n",
            "25938\n",
            "25939\n",
            "25940\n",
            "25941\n",
            "25942\n",
            "25943\n",
            "25944\n",
            "25945\n",
            "25946\n",
            "25947\n",
            "25948\n",
            "25949\n",
            "25950\n",
            "25951\n",
            "25952\n",
            "25953\n",
            "25954\n",
            "25955\n",
            "25956\n",
            "25957\n",
            "25958\n",
            "25959\n",
            "25960\n",
            "25961\n",
            "25962\n",
            "25963\n",
            "25964\n",
            "25965\n",
            "25966\n",
            "25967\n",
            "25968\n",
            "25969\n",
            "25970\n",
            "25971\n",
            "25972\n",
            "25973\n",
            "25974\n",
            "25975\n",
            "25976\n",
            "25977\n",
            "25978\n",
            "25979\n",
            "25980\n",
            "25981\n",
            "25982\n",
            "25983\n",
            "25984\n",
            "25985\n",
            "25986\n",
            "25987\n",
            "25988\n",
            "25989\n",
            "25990\n",
            "25991\n",
            "25992\n",
            "25993\n",
            "25994\n",
            "25995\n",
            "25996\n",
            "25997\n",
            "25998\n",
            "25999\n",
            "26000\n",
            "26001\n",
            "26002\n",
            "26003\n",
            "26004\n",
            "26005\n",
            "26006\n",
            "26007\n",
            "26008\n",
            "26009\n",
            "26010\n",
            "26011\n",
            "26012\n",
            "26013\n",
            "26014\n",
            "26015\n",
            "26016\n",
            "26017\n",
            "26018\n",
            "26019\n",
            "26020\n",
            "26021\n",
            "26022\n",
            "26023\n",
            "26024\n",
            "26025\n",
            "26026\n",
            "26027\n",
            "26028\n",
            "26029\n",
            "26030\n",
            "26031\n",
            "26032\n",
            "26033\n",
            "26034\n",
            "26035\n",
            "26036\n",
            "26037\n",
            "26038\n",
            "26039\n",
            "26040\n",
            "26041\n",
            "26042\n",
            "26043\n",
            "26044\n",
            "26045\n",
            "26046\n",
            "26047\n",
            "26048\n",
            "26049\n",
            "26050\n",
            "26051\n",
            "26052\n",
            "26053\n",
            "26054\n",
            "26055\n",
            "26056\n",
            "26057\n",
            "26058\n",
            "26059\n",
            "26060\n",
            "26061\n",
            "26062\n",
            "26063\n",
            "26064\n",
            "26065\n",
            "26066\n",
            "26067\n",
            "26068\n",
            "26069\n",
            "26070\n",
            "26071\n",
            "26072\n",
            "26073\n",
            "26074\n",
            "26075\n",
            "26076\n",
            "26077\n",
            "26078\n",
            "26079\n",
            "26080\n",
            "26081\n",
            "26082\n",
            "26083\n",
            "26084\n",
            "26085\n",
            "26086\n",
            "26087\n",
            "26088\n",
            "26089\n",
            "26090\n",
            "26091\n",
            "26092\n",
            "26093\n",
            "26094\n",
            "26095\n",
            "26096\n",
            "26097\n",
            "26098\n",
            "26099\n",
            "26100\n",
            "26101\n",
            "26102\n",
            "26103\n",
            "26104\n",
            "26105\n",
            "26106\n",
            "26107\n",
            "26108\n",
            "26109\n",
            "26110\n",
            "26111\n",
            "26112\n",
            "26113\n",
            "26114\n",
            "26115\n",
            "26116\n",
            "26117\n",
            "26118\n",
            "26119\n",
            "26120\n",
            "26121\n",
            "26122\n",
            "26123\n",
            "26124\n",
            "26125\n",
            "26126\n",
            "26127\n",
            "26128\n",
            "26129\n",
            "26130\n",
            "26131\n",
            "26132\n",
            "26133\n",
            "26134\n",
            "26135\n",
            "26136\n",
            "26137\n",
            "26138\n",
            "26139\n",
            "26140\n",
            "26141\n",
            "26142\n",
            "26143\n",
            "26144\n",
            "26145\n",
            "26146\n",
            "26147\n",
            "26148\n",
            "26149\n",
            "26150\n",
            "26151\n",
            "26152\n",
            "26153\n",
            "26154\n",
            "26155\n",
            "26156\n",
            "26157\n",
            "26158\n",
            "26159\n",
            "26160\n",
            "26161\n",
            "26162\n",
            "26163\n",
            "26164\n",
            "26165\n",
            "26166\n",
            "26167\n",
            "26168\n",
            "26169\n",
            "26170\n",
            "26171\n",
            "26172\n",
            "26173\n",
            "26174\n",
            "26175\n",
            "26176\n",
            "26177\n",
            "26178\n",
            "26179\n",
            "26180\n",
            "26181\n",
            "26182\n",
            "26183\n",
            "26184\n",
            "26185\n",
            "26186\n",
            "26187\n",
            "26188\n",
            "26189\n",
            "26190\n",
            "26191\n",
            "26192\n",
            "26193\n",
            "26194\n",
            "26195\n",
            "26196\n",
            "26197\n",
            "26198\n",
            "26199\n",
            "26200\n",
            "26201\n",
            "26202\n",
            "26203\n",
            "26204\n",
            "26205\n",
            "26206\n",
            "26207\n",
            "26208\n",
            "26209\n",
            "26210\n",
            "26211\n",
            "26212\n",
            "26213\n",
            "26214\n",
            "26215\n",
            "26216\n",
            "26217\n",
            "26218\n",
            "26219\n",
            "26220\n",
            "26221\n",
            "26222\n",
            "26223\n",
            "26224\n",
            "26225\n",
            "26226\n",
            "26227\n",
            "26228\n",
            "26229\n",
            "26230\n",
            "26231\n",
            "26232\n",
            "26233\n",
            "26234\n",
            "26235\n",
            "26236\n",
            "26237\n",
            "26238\n",
            "26239\n",
            "26240\n",
            "26241\n",
            "26242\n",
            "26243\n",
            "26244\n",
            "26245\n",
            "26246\n",
            "26247\n",
            "26248\n",
            "26249\n",
            "26250\n",
            "26251\n",
            "26252\n",
            "26253\n",
            "26254\n",
            "26255\n",
            "26256\n",
            "26257\n",
            "26258\n",
            "26259\n",
            "26260\n",
            "26261\n",
            "26262\n",
            "26263\n",
            "26264\n",
            "26265\n",
            "26266\n",
            "26267\n",
            "26268\n",
            "26269\n",
            "26270\n",
            "26271\n",
            "26272\n",
            "26273\n",
            "26274\n",
            "26275\n",
            "26276\n",
            "26277\n",
            "26278\n",
            "26279\n",
            "26280\n",
            "26281\n",
            "26282\n",
            "26283\n",
            "26284\n",
            "26285\n",
            "26286\n",
            "26287\n",
            "26288\n",
            "26289\n",
            "26290\n",
            "26291\n",
            "26292\n",
            "26293\n",
            "26294\n",
            "26295\n",
            "26296\n",
            "26297\n",
            "26298\n",
            "26299\n",
            "26300\n",
            "26301\n",
            "26302\n",
            "26303\n",
            "26304\n",
            "26305\n",
            "26306\n",
            "26307\n",
            "26308\n",
            "26309\n",
            "26310\n",
            "26311\n",
            "26312\n",
            "26313\n",
            "26314\n",
            "26315\n",
            "26316\n",
            "26317\n",
            "26318\n",
            "26319\n",
            "26320\n",
            "26321\n",
            "26322\n",
            "26323\n",
            "26324\n",
            "26325\n",
            "26326\n",
            "26327\n",
            "26328\n",
            "26329\n",
            "26330\n",
            "26331\n",
            "26332\n",
            "26333\n",
            "26334\n",
            "26335\n",
            "26336\n",
            "26337\n",
            "26338\n",
            "26339\n",
            "26340\n",
            "26341\n",
            "26342\n",
            "26343\n",
            "26344\n",
            "26345\n",
            "26346\n",
            "26347\n",
            "26348\n",
            "26349\n",
            "26350\n",
            "26351\n",
            "26352\n",
            "26353\n",
            "26354\n",
            "26355\n",
            "26356\n",
            "26357\n",
            "26358\n",
            "26359\n",
            "26360\n",
            "26361\n",
            "26362\n",
            "26363\n",
            "26364\n",
            "26365\n",
            "26366\n",
            "26367\n",
            "26368\n",
            "26369\n",
            "26370\n",
            "26371\n",
            "26372\n",
            "26373\n",
            "26374\n",
            "26375\n",
            "26376\n",
            "26377\n",
            "26378\n",
            "26379\n",
            "26380\n",
            "26381\n",
            "26382\n",
            "26383\n",
            "26384\n",
            "26385\n",
            "26386\n",
            "26387\n",
            "26388\n",
            "26389\n",
            "26390\n",
            "26391\n",
            "26392\n",
            "26393\n",
            "26394\n",
            "26395\n",
            "26396\n",
            "26397\n",
            "26398\n",
            "26399\n",
            "26400\n",
            "26401\n",
            "26402\n",
            "26403\n",
            "26404\n",
            "26405\n",
            "26406\n",
            "26407\n",
            "26408\n",
            "26409\n",
            "26410\n",
            "26411\n",
            "26412\n",
            "26413\n",
            "26414\n",
            "26415\n",
            "26416\n",
            "26417\n",
            "26418\n",
            "26419\n",
            "26420\n",
            "26421\n",
            "26422\n",
            "26423\n",
            "26424\n",
            "26425\n",
            "26426\n",
            "26427\n",
            "26428\n",
            "26429\n",
            "26430\n",
            "26431\n",
            "26432\n",
            "26433\n",
            "26434\n",
            "26435\n",
            "26436\n",
            "26437\n",
            "26438\n",
            "26439\n",
            "26440\n",
            "26441\n",
            "26442\n",
            "26443\n",
            "26444\n",
            "26445\n",
            "26446\n",
            "26447\n",
            "26448\n",
            "26449\n",
            "26450\n",
            "26451\n",
            "26452\n",
            "26453\n",
            "26454\n",
            "26455\n",
            "26456\n",
            "26457\n",
            "26458\n",
            "26459\n",
            "26460\n",
            "26461\n",
            "26462\n",
            "26463\n",
            "26464\n",
            "26465\n",
            "26466\n",
            "26467\n",
            "26468\n",
            "26469\n",
            "26470\n",
            "26471\n",
            "26472\n",
            "26473\n",
            "26474\n",
            "26475\n",
            "26476\n",
            "26477\n",
            "26478\n",
            "26479\n",
            "26480\n",
            "26481\n",
            "26482\n",
            "26483\n",
            "26484\n",
            "26485\n",
            "26486\n",
            "26487\n",
            "26488\n",
            "26489\n",
            "26490\n",
            "26491\n",
            "26492\n",
            "26493\n",
            "26494\n",
            "26495\n",
            "26496\n",
            "26497\n",
            "26498\n",
            "26499\n",
            "26500\n",
            "26501\n",
            "26502\n",
            "26503\n",
            "26504\n",
            "26505\n",
            "26506\n",
            "26507\n",
            "26508\n",
            "26509\n",
            "26510\n",
            "26511\n",
            "26512\n",
            "26513\n",
            "26514\n",
            "26515\n",
            "26516\n",
            "26517\n",
            "26518\n",
            "26519\n",
            "26520\n",
            "26521\n",
            "26522\n",
            "26523\n",
            "26524\n",
            "26525\n",
            "26526\n",
            "26527\n",
            "26528\n",
            "26529\n",
            "26530\n",
            "26531\n",
            "26532\n",
            "26533\n",
            "26534\n",
            "26535\n",
            "26536\n",
            "26537\n",
            "26538\n",
            "26539\n",
            "26540\n",
            "26541\n",
            "26542\n",
            "26543\n",
            "26544\n",
            "26545\n",
            "26546\n",
            "26547\n",
            "26548\n",
            "26549\n",
            "26550\n",
            "26551\n",
            "26552\n",
            "26553\n",
            "26554\n",
            "26555\n",
            "26556\n",
            "26557\n",
            "26558\n",
            "26559\n",
            "26560\n",
            "26561\n",
            "26562\n",
            "26563\n",
            "26564\n",
            "26565\n",
            "26566\n",
            "26567\n",
            "26568\n",
            "26569\n",
            "26570\n",
            "26571\n",
            "26572\n",
            "26573\n",
            "26574\n",
            "26575\n",
            "26576\n",
            "26577\n",
            "26578\n",
            "26579\n",
            "26580\n",
            "26581\n",
            "26582\n",
            "26583\n",
            "26584\n",
            "26585\n",
            "26586\n",
            "26587\n",
            "26588\n",
            "26589\n",
            "26590\n",
            "26591\n",
            "26592\n",
            "26593\n",
            "26594\n",
            "26595\n",
            "26596\n",
            "26597\n",
            "26598\n",
            "26599\n",
            "26600\n",
            "26601\n",
            "26602\n",
            "26603\n",
            "26604\n",
            "26605\n",
            "26606\n",
            "26607\n",
            "26608\n",
            "26609\n",
            "26610\n",
            "26611\n",
            "26612\n",
            "26613\n",
            "26614\n",
            "26615\n",
            "26616\n",
            "26617\n",
            "26618\n",
            "26619\n",
            "26620\n",
            "26621\n",
            "26622\n",
            "26623\n",
            "26624\n",
            "26625\n",
            "26626\n",
            "26627\n",
            "26628\n",
            "26629\n",
            "26630\n",
            "26631\n",
            "26632\n",
            "26633\n",
            "26634\n",
            "26635\n",
            "26636\n",
            "26637\n",
            "26638\n",
            "26639\n",
            "26640\n",
            "26641\n",
            "26642\n",
            "26643\n",
            "26644\n",
            "26645\n",
            "26646\n",
            "26647\n",
            "26648\n",
            "26649\n",
            "26650\n",
            "26651\n",
            "26652\n",
            "26653\n",
            "26654\n",
            "26655\n",
            "26656\n",
            "26657\n",
            "26658\n",
            "26659\n",
            "26660\n",
            "26661\n",
            "26662\n",
            "26663\n",
            "26664\n",
            "26665\n",
            "26666\n",
            "26667\n",
            "26668\n",
            "26669\n",
            "26670\n",
            "26671\n",
            "26672\n",
            "26673\n",
            "26674\n",
            "26675\n",
            "26676\n",
            "26677\n",
            "26678\n",
            "26679\n",
            "26680\n",
            "26681\n",
            "26682\n",
            "26683\n",
            "26684\n",
            "26685\n",
            "26686\n",
            "26687\n",
            "26688\n",
            "26689\n",
            "26690\n",
            "26691\n",
            "26692\n",
            "26693\n",
            "26694\n",
            "26695\n",
            "26696\n",
            "26697\n",
            "26698\n",
            "26699\n",
            "26700\n",
            "26701\n",
            "26702\n",
            "26703\n",
            "26704\n",
            "26705\n",
            "26706\n",
            "26707\n",
            "26708\n",
            "26709\n",
            "26710\n",
            "26711\n",
            "26712\n",
            "26713\n",
            "26714\n",
            "26715\n",
            "26716\n",
            "26717\n",
            "26718\n",
            "26719\n",
            "26720\n",
            "26721\n",
            "26722\n",
            "26723\n",
            "26724\n",
            "26725\n",
            "26726\n",
            "26727\n",
            "26728\n",
            "26729\n",
            "26730\n",
            "26731\n",
            "26732\n",
            "26733\n",
            "26734\n",
            "26735\n",
            "26736\n",
            "26737\n",
            "26738\n",
            "26739\n",
            "26740\n",
            "26741\n",
            "26742\n",
            "26743\n",
            "26744\n",
            "26745\n",
            "26746\n",
            "26747\n",
            "26748\n",
            "26749\n",
            "26750\n",
            "26751\n",
            "26752\n",
            "26753\n",
            "26754\n",
            "26755\n",
            "26756\n",
            "26757\n",
            "26758\n",
            "26759\n",
            "26760\n",
            "26761\n",
            "26762\n",
            "26763\n",
            "26764\n",
            "26765\n",
            "26766\n",
            "26767\n",
            "26768\n",
            "26769\n",
            "26770\n",
            "26771\n",
            "26772\n",
            "26773\n",
            "26774\n",
            "26775\n",
            "26776\n",
            "26777\n",
            "26778\n",
            "26779\n",
            "26780\n",
            "26781\n",
            "26782\n",
            "26783\n",
            "26784\n",
            "26785\n",
            "26786\n",
            "26787\n",
            "26788\n",
            "26789\n",
            "26790\n",
            "26791\n",
            "26792\n",
            "26793\n",
            "26794\n",
            "26795\n",
            "26796\n",
            "26797\n",
            "26798\n",
            "26799\n",
            "26800\n",
            "26801\n",
            "26802\n",
            "26803\n",
            "26804\n",
            "26805\n",
            "26806\n",
            "26807\n",
            "26808\n",
            "26809\n",
            "26810\n",
            "26811\n",
            "26812\n",
            "26813\n",
            "26814\n",
            "26815\n",
            "26816\n",
            "26817\n",
            "26818\n",
            "26819\n",
            "26820\n",
            "26821\n",
            "26822\n",
            "26823\n",
            "26824\n",
            "26825\n",
            "26826\n",
            "26827\n",
            "26828\n",
            "26829\n",
            "26830\n",
            "26831\n",
            "26832\n",
            "26833\n",
            "26834\n",
            "26835\n",
            "26836\n",
            "26837\n",
            "26838\n",
            "26839\n",
            "26840\n",
            "26841\n",
            "26842\n",
            "26843\n",
            "26844\n",
            "26845\n",
            "26846\n",
            "26847\n",
            "26848\n",
            "26849\n",
            "26850\n",
            "26851\n",
            "26852\n",
            "26853\n",
            "26854\n",
            "26855\n",
            "26856\n",
            "26857\n",
            "26858\n",
            "26859\n",
            "26860\n",
            "26861\n",
            "26862\n",
            "26863\n",
            "26864\n",
            "26865\n",
            "26866\n",
            "26867\n",
            "26868\n",
            "26869\n",
            "26870\n",
            "26871\n",
            "26872\n",
            "26873\n",
            "26874\n",
            "26875\n",
            "26876\n",
            "26877\n",
            "26878\n",
            "26879\n",
            "26880\n",
            "26881\n",
            "26882\n",
            "26883\n",
            "26884\n",
            "26885\n",
            "26886\n",
            "26887\n",
            "26888\n",
            "26889\n",
            "26890\n",
            "26891\n",
            "26892\n",
            "26893\n",
            "26894\n",
            "26895\n",
            "26896\n",
            "26897\n",
            "26898\n",
            "26899\n",
            "26900\n",
            "26901\n",
            "26902\n",
            "26903\n",
            "26904\n",
            "26905\n",
            "26906\n",
            "26907\n",
            "26908\n",
            "26909\n",
            "26910\n",
            "26911\n",
            "26912\n",
            "26913\n",
            "26914\n",
            "26915\n",
            "26916\n",
            "26917\n",
            "26918\n",
            "26919\n",
            "26920\n",
            "26921\n",
            "26922\n",
            "26923\n",
            "26924\n",
            "26925\n",
            "26926\n",
            "26927\n",
            "26928\n",
            "26929\n",
            "26930\n",
            "26931\n",
            "26932\n",
            "26933\n",
            "26934\n",
            "26935\n",
            "26936\n",
            "26937\n",
            "26938\n",
            "26939\n",
            "26940\n",
            "26941\n",
            "26942\n",
            "26943\n",
            "26944\n",
            "26945\n",
            "26946\n",
            "26947\n",
            "26948\n",
            "26949\n",
            "26950\n",
            "26951\n",
            "26952\n",
            "26953\n",
            "26954\n",
            "26955\n",
            "26956\n",
            "26957\n",
            "26958\n",
            "26959\n",
            "26960\n",
            "26961\n",
            "26962\n",
            "26963\n",
            "26964\n",
            "26965\n",
            "26966\n",
            "26967\n",
            "26968\n",
            "26969\n",
            "26970\n",
            "26971\n",
            "26972\n",
            "26973\n",
            "26974\n",
            "26975\n",
            "26976\n",
            "26977\n",
            "26978\n",
            "26979\n",
            "26980\n",
            "26981\n",
            "26982\n",
            "26983\n",
            "26984\n",
            "26985\n",
            "26986\n",
            "26987\n",
            "26988\n",
            "26989\n",
            "26990\n",
            "26991\n",
            "26992\n",
            "26993\n",
            "26994\n",
            "26995\n",
            "26996\n",
            "26997\n",
            "26998\n",
            "26999\n"
          ]
        }
      ],
      "source": [
        "def merge_json_files(data_folder):\n",
        "    merged_data = []\n",
        "    for i in range(27000):\n",
        "        print(i)\n",
        "        \n",
        "        file_path = os.path.join(data_folder, f\"translated_{i}.json\")\n",
        "\n",
        "        # revise here, jump if it's no file in the folder\n",
        "        if not os.path.isfile( file_path ):\n",
        "          continue\n",
        "        \n",
        "        with open(file_path, 'r', encoding=\"utf-8\") as file:\n",
        "            data = json.load(file)\n",
        "            merged_data.append(data)\n",
        "    return merged_data\n",
        "\n",
        "def write_merged_json_file(output_file, merged_data):\n",
        "    with open(output_file, 'w', encoding=\"utf-8\") as file:\n",
        "        json.dump(merged_data, file, indent=2, ensure_ascii=False)\n",
        "\n",
        "data_folder = 'translated_data/data'\n",
        "output_file = 'chinese_alpaca_data.json'\n",
        "\n",
        "merged_data = merge_json_files(data_folder)\n",
        "write_merged_json_file(output_file, merged_data)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "AvoSyWiZLYBl"
      },
      "outputs": [],
      "source": []
    }
  ],
  "metadata": {
    "colab": {
      "provenance": []
    },
    "kernelspec": {
      "display_name": "Python 3",
      "name": "python3"
    },
    "language_info": {
      "name": "python"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}
